[FIX] Lagerbereiche für GOH werden nun korrekt gezählt und in die yaml geschrieben
This commit is contained in:
1 parent
d9043ebca5
commit
b324362351
14 files changed
+98
-615
No files matched your search
+12
-88
@@ -5,10 +5,8 @@
|
||||
;; - zwei Geschosse auf derselben 2D-Kontur (EG Hallenboden, OG 3100 mm)
|
||||
;; - einen Lagerbereich 10000 x 6000 im OG mit Auto-Fuellung
|
||||
;; und prueft Bloecke, Attribute, Layer, Neuberechnung (keine Verdopplung),
|
||||
;; den Neuaufbau einer geaenderten Reihe und die Rohdaten von LAGER_EXPORT.
|
||||
;; Zum Schluss Regression der goh_rack-Erkennung (lg-racks-sammeln) gegen
|
||||
;; tests/testdata/goh_storage_test.dwg (Referenzwerte aus
|
||||
;; goh_storage_test_regal_report.txt: 38946.39 mm / 77892.78 mm).
|
||||
;; den Neuaufbau einer geaenderten Reihe, die Rohdaten von LAGER_EXPORT und
|
||||
;; die Zaehlung von LG_REGALE.
|
||||
;;
|
||||
;; Aufruf in BricsCAD:
|
||||
;; (load (strcat (getenv "DXFMAKRO") "/tests/test_lager.lsp"))
|
||||
@@ -83,8 +81,8 @@
|
||||
(vl-remove-if-not '(lambda (ed) (= (cdr (assoc 0 ed)) "ATTDEF")) (lg-blockdef-objekte bname))))
|
||||
|
||||
(defun lager:tests ( / k0 k1 g0 g1 kb bereich reihen gaenge r0 neu raw daten pfad f
|
||||
racks laengen kap tr kb2 b2 kinder mg mg2 hg alt eb
|
||||
r1 gg1 n-alt g2 r2 gg2 ids b2k n-kinder bb gr rg grp rk kand zl
|
||||
kb2 b2 kinder mg mg2 hg alt eb
|
||||
r1 gg1 n-alt g2 r2 gg2 ids b2k n-kinder bb rg rk zl
|
||||
b3 rh3 mg3 ge3 ag3 n3 mr3 alt3)
|
||||
(setvar "CMDECHO" 0)
|
||||
(ssg-gui-aus)
|
||||
@@ -366,88 +364,14 @@
|
||||
(tlg-eq "rechteck-befehl: fase abgelehnt" 'kein-rechteck (lg-rechteck-ecken-aus-poly (entlast)))
|
||||
(entdel (entlast))
|
||||
|
||||
;; --- Rack-Erkennung: direkt, verschachtelt + gedreht, MINSERT ---
|
||||
;; eigener Testblock (Parameter als Attribut bzw. ATTDEF-Vorgabe), damit
|
||||
;; die Suche nach goh_rack davon unberuehrt bleibt
|
||||
(lg-blockdef "TLG_RACK" (list (lg-geom-linie '(0.0 0.0 0.0) '(1000.0 0.0 0.0))
|
||||
(lg-geom-attdef "Laenge" "500" '(0.0 0.0 0.0) 50.0 nil)
|
||||
(lg-geom-attdef "Ebenen" "3" '(0.0 0.0 0.0) 50.0 nil)))
|
||||
(lg-blockdef "TLG_GRUPPE" (list '((0 . "INSERT") (8 . "0") (2 . "TLG_RACK") (10 0.0 0.0 0.0))
|
||||
'((0 . "INSERT") (8 . "0") (2 . "TLG_RACK") (10 0.0 2000.0 0.0))))
|
||||
(lg-block-einfuegen "TLG_RACK" '(-100000.0 0.0 0.0) 0.0 "0" '(("Laenge" . "100 cm") ("Ebenen" . "2")))
|
||||
(setq grp (lg-block-einfuegen "TLG_GRUPPE" '(-200000.0 0.0 0.0) (/ pi 2.0) "0" nil))
|
||||
(vla-AddMInsertBlock (lg-modelspace) (vlax-3d-point '(-300000.0 0.0 0.0)) "TLG_RACK"
|
||||
1.0 1.0 1.0 0.0 1 3 1000.0 3000.0)
|
||||
(setq rk (lg-racks-finden "TLG_RACK" "Laenge" "Ebenen"))
|
||||
(tlg-eq "racks: anzahl" 6 (length rk))
|
||||
(tlg-eq "racks: laenge (attribut mit einheit + vorgaben)" 3500.0
|
||||
(apply '+ (mapcar '(lambda (r) (cond ((lg-rk-laenge r)) (0.0))) rk)))
|
||||
(tlg-eq "racks: ebenen" 17.0 (apply '+ (mapcar '(lambda (r) (cond ((lg-rk-ebenen r)) (0.0))) rk)))
|
||||
(tlg-eq "racks: verschachtelt top" 2
|
||||
(length (vl-remove-if-not '(lambda (r) (equal (lg-rk-top r) grp)) rk)))
|
||||
;; Gruppe um 90 Grad gedreht: zweites Rack (lokal y = 2000) liegt bei x = -202000
|
||||
(tlg-eq "racks: verschachtelt gedreht" T
|
||||
(equal (vl-sort (mapcar '(lambda (r) (car (lg-rk-mitte r)))
|
||||
(vl-remove-if-not '(lambda (r) (equal (lg-rk-top r) grp)) rk))
|
||||
'<)
|
||||
'(-202000.0 -200000.0) 100.0))
|
||||
;; MINSERT 1 Zeile x 3 Spalten, Abstand 3000: Mitten = Einfuegepunkte
|
||||
(tlg-eq "racks: minsert" '(-300000.0 -297000.0 -294000.0)
|
||||
(vl-sort (mapcar '(lambda (r) (car (lg-rk-mitte r)))
|
||||
(vl-remove-if-not '(lambda (r) (< (car (lg-rk-mitte r)) -250000.0)) rk))
|
||||
'<))
|
||||
|
||||
;; --- goh_rack-Regression (Referenzwerte goh_storage_test_regal_report.txt) ---
|
||||
(setq pfad (strcat (getenv "DXFMAKRO") "/tests/testdata/goh_storage_test.dwg"))
|
||||
(if (findfile pfad)
|
||||
(progn
|
||||
;; "*" = aufgeloest einfuegen: die goh_rack-Bloecke liegen danach
|
||||
;; direkt im Modellbereich wie in der Originalzeichnung
|
||||
(command "_.-INSERT" (strcat "*" pfad) '(50000.0 0.0 0.0) 1 0)
|
||||
(setq racks (lg-export-goh-racks nil))
|
||||
(tlg-eq "goh_rack anzahl" 4 (length (car racks)))
|
||||
(setq laengen (tlg-summe (car racks) "laenge_mm"))
|
||||
(setq kap 0.0)
|
||||
(foreach t1 (car racks)
|
||||
(setq tr (ssg-json-parse t1))
|
||||
(setq kap (+ kap (* (ssg-json-get tr "laenge_mm") (ssg-json-get tr "ebenen")))))
|
||||
(tlg-eq "goh_rack laenge gesamt" T (equal laengen 38946.39 0.1))
|
||||
(tlg-eq "goh_rack laenge x ebenen" T (equal kap 77892.78 0.1))
|
||||
(princ (strcat "\n goh_rack: " (rtos laengen 2 2) " mm / " (rtos kap 2 2) " mm"))
|
||||
|
||||
;; --- Geschoss mit goh_racks kopieren (deckungsgleich, 2D) ---
|
||||
;; Geschosskontur um die Racks legen (Mitten aus lg-racks-sammeln + Rand)
|
||||
(setq bb (ssg-poly-bbox (mapcar '(lambda (p) (list (car p) (cadr p)))
|
||||
(mapcar 'lg-rk-mitte (lg-racks-sammeln)))))
|
||||
(setq gr (lg-geschoss-naechste-nr))
|
||||
(lg-geschoss-anlegen (tlg-rechteck (- (car (car bb)) 20000.0) (- (cadr (car bb)) 20000.0)
|
||||
(+ (car (cadr bb)) 20000.0) (+ (cadr (cadr bb)) 20000.0))
|
||||
(append (list (cons "HOEHE_BELAG_mm" "20000")) (lg-geschoss-vorgaben gr)))
|
||||
(setq neu (lg-geschosse-kopieren (list (cons "QUELLE" (itoa gr)) (cons "ANZAHL" "1")
|
||||
(cons "ABSTAND_mm" "3000") (cons "BELAG_ART" "spanplatte"))))
|
||||
(setq racks (lg-export-goh-racks (lg-geschoss-kandidaten)))
|
||||
(tlg-eq "rack-kopie: anzahl" 8 (length (car racks)))
|
||||
(tlg-eq "rack-kopie: quelle" 4
|
||||
(length (vl-remove-if-not '(lambda (t1) (equal (ssg-json-get (ssg-json-parse t1) "geschoss") gr))
|
||||
(car racks))))
|
||||
(tlg-eq "rack-kopie: kopie" 4
|
||||
(length (vl-remove-if-not '(lambda (t1) (equal (ssg-json-get (ssg-json-parse t1) "geschoss") (car neu)))
|
||||
(car racks))))
|
||||
(tlg-eq "rack-kopie: keine warnung" nil (cadr racks))
|
||||
(tlg-eq "rack-kopie: laenge kopie" T
|
||||
(equal (tlg-summe (car racks) "laenge_mm") (* 2 38946.39) 0.2))
|
||||
(tlg-eq "rack-kopie: layer" T (if (tblsearch "LAYER" (strcat "LG_Regal_G" (itoa (car neu)))) T nil))
|
||||
;; Auswertung je Geschoss wie LG_REGALE: je 4 Racks in Quelle und Kopie
|
||||
(setq kand (lg-geschoss-kandidaten))
|
||||
(setq zl (lg-racks-auswerten
|
||||
(mapcar '(lambda (r) (list (lg-rack-geschoss (lg-ent-layer (lg-rk-top r)) (lg-rk-mitte r) kand)
|
||||
(lg-rk-laenge r) (lg-rk-ebenen r)))
|
||||
(lg-racks-sammeln))))
|
||||
(tlg-eq "lg_regale: geschosse" (list gr (car neu)) (mapcar 'car zl))
|
||||
(tlg-eq "lg_regale: anzahl" '(4 4) (mapcar 'cadr zl))
|
||||
(tlg-eq "lg_regale: laenge x ebenen" T (equal (cadddr (car zl)) 77892.78 0.2))
|
||||
(tlg-eq "lg_regale: befehl laeuft" nil (vl-catch-all-error-p (vl-catch-all-apply 'c:LG_REGALE nil))))
|
||||
(tlg-eq "goh_storage_test.dwg vorhanden" T nil))
|
||||
;; --- LG_REGALE: zaehlt die Regalreihen aus den Makros (LG_REIHE_*) je Geschoss ---
|
||||
(setq zl (lg-reihen-auswerten (mapcar '(lambda (e) (lg-reihe-eintrag (ssg-attrib-read e)))
|
||||
(lg-alle-bloecke "LG_REIHE_*"))))
|
||||
(tlg-eq "lg_regale: reihen gezaehlt" (length (lg-alle-bloecke "LG_REIHE_*"))
|
||||
(apply '+ (mapcar 'cadr zl)))
|
||||
(tlg-eq "lg_regale: reihen vorhanden" T (> (apply '+ (mapcar 'cadr zl)) 0))
|
||||
(tlg-eq "lg_regale: reihen mit geschoss" nil (assoc nil zl))
|
||||
(tlg-eq "lg_regale: befehl laeuft (reihen)" nil (vl-catch-all-error-p (vl-catch-all-apply 'c:LG_REGALE nil)))
|
||||
|
||||
;; --- Von Hand Gesetztes bleibt: Einfuegen loest keine Neuberechnung aus ---
|
||||
(setq kb (tlg-rechteck 600000.0 0.0 610000.0 6000.0))
|
||||
|
||||
Reference in new issue
Block a user