Maße von AUS und EIN schleuselement festgestellt
This commit is contained in:
+75
-19
@@ -85,6 +85,7 @@
|
|||||||
(defun extract-ks-from-block (block-obj / sub-entities sub-obj ks-results
|
(defun extract-ks-from-block (block-obj / sub-entities sub-obj ks-results
|
||||||
ks-ref inner-entities inner-obj origin x-end y-end z-end
|
ks-ref inner-entities inner-obj origin x-end y-end z-end
|
||||||
line-start line-end axis line-len line-vec)
|
line-start line-end axis line-len line-vec)
|
||||||
|
(dbgf "extract-ks-from-block")
|
||||||
(setq ks-results '())
|
(setq ks-results '())
|
||||||
|
|
||||||
;; Block explodieren
|
;; Block explodieren
|
||||||
@@ -140,13 +141,14 @@
|
|||||||
(if (not (vlax-erased-p sub-obj)) (vla-Delete sub-obj))
|
(if (not (vlax-erased-p sub-obj)) (vla-Delete sub-obj))
|
||||||
)
|
)
|
||||||
|
|
||||||
ks-results
|
(dbgreturn ks-results)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
;; TEIL 5: PUNKTE-AUSWAHL MIT Z-HÖHE (HIER EINFÜGEN!)
|
;; TEIL 5: PUNKTE-AUSWAHL MIT Z-HÖHE (HIER EINFÜGEN!)
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
(defun get-3d-point-from-object (msg / ent obj pt variant)
|
(defun get-3d-point-from-object (msg / ent obj pt variant)
|
||||||
|
(dbgf "get-3d-point-from-object")
|
||||||
(princ msg)
|
(princ msg)
|
||||||
(princ "\n >> Objekt (Block) wählen: ")
|
(princ "\n >> Objekt (Block) wählen: ")
|
||||||
(setq ent (entsel))
|
(setq ent (entsel))
|
||||||
@@ -165,21 +167,20 @@
|
|||||||
"\n X = " (rtos (car pt) 2 3)
|
"\n X = " (rtos (car pt) 2 3)
|
||||||
"\n Y = " (rtos (cadr pt) 2 3)
|
"\n Y = " (rtos (cadr pt) 2 3)
|
||||||
"\n Z = " (rtos (caddr pt) 2 3)))
|
"\n Z = " (rtos (caddr pt) 2 3)))
|
||||||
pt
|
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
;; Kein Block: Verwende angeklickten Punkt
|
;; Kein Block: Verwende angeklickten Punkt
|
||||||
(setq pt (cadr ent))
|
(setq pt (cadr ent))
|
||||||
(princ (strcat "\n ✓ Punkt auf Objekt: Z = " (rtos (caddr pt) 2 2) " mm"))
|
(princ (strcat "\n ✓ Punkt auf Objekt: Z = " (rtos (caddr pt) 2 2) " mm"))
|
||||||
pt
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
(princ "\n Kein Objekt gewählt.")
|
(princ "\n Kein Objekt gewählt.")
|
||||||
nil
|
(setq pt nil)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
(dbgreturn pt)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
@@ -188,11 +189,12 @@
|
|||||||
|
|
||||||
;; Lädt die Bibliothek und extrahiert ALLE benötigten Maße
|
;; Lädt die Bibliothek und extrahiert ALLE benötigten Maße
|
||||||
(defun init-bibliothek ( / temp-obj bogen-winkel)
|
(defun init-bibliothek ( / temp-obj bogen-winkel)
|
||||||
|
(dbgf "init-bibliothek")
|
||||||
|
|
||||||
(if *lib-initialized*
|
(if *lib-initialized*
|
||||||
(progn
|
(progn
|
||||||
(princ "\n Bibliothek bereits initialisiert.")
|
(princ "\n Bibliothek bereits initialisiert.")
|
||||||
t
|
(dbgreturn t)
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
(princ "\n Lade Blockdefinitionen aus Bibliothek...")
|
(princ "\n Lade Blockdefinitionen aus Bibliothek...")
|
||||||
@@ -207,8 +209,58 @@
|
|||||||
(princ " OK.")
|
(princ " OK.")
|
||||||
|
|
||||||
;; === AUS_ELEMENT Maße extrahieren ===
|
;; === AUS_ELEMENT Maße extrahieren ===
|
||||||
(princ "\n Extrahiere AUS_Element Maße...")
|
(princ "\n Extrahiere AUS_Element Masse...")
|
||||||
;; ... (wie gehabt) ...
|
(if (tblsearch "BLOCK" "_3D_AS_90_links")
|
||||||
|
(progn
|
||||||
|
(setq temp-obj (vla-InsertBlock modelspace
|
||||||
|
(vlax-3D-point '(0 0 0))
|
||||||
|
"_3D_AS_90_links" 1.0 1.0 1.0 0))
|
||||||
|
(setq ks-data (extract-ks-from-block temp-obj))
|
||||||
|
(vla-Delete temp-obj)
|
||||||
|
(setq ks-ein-pos nil ks-aus-pos nil)
|
||||||
|
(foreach item ks-data
|
||||||
|
(if (= (car item) "KS_EIN") (setq ks-ein-pos (cadr item)))
|
||||||
|
(if (= (car item) "KS_AUS") (setq ks-aus-pos (cadr item)))
|
||||||
|
)
|
||||||
|
(if (and ks-ein-pos ks-aus-pos)
|
||||||
|
(progn
|
||||||
|
(setq aus-dx (- (caaddr ks-aus-pos) (caadr ks-ein-pos)))
|
||||||
|
(setq aus-dy (- (cadr (caddr ks-aus-pos)) (cadr (cadr ks-ein-pos))))
|
||||||
|
(setq aus-dz (- (caddr (caddr ks-aus-pos)) (caddr (cadr ks-ein-pos))))
|
||||||
|
(princ (strcat "\n AUS_Element: dx=" (rtos aus-dx 2 0) ", dz=" (rtos aus-dz 2 0)))
|
||||||
|
)
|
||||||
|
(princ "\n FEHLER: KS_EIN/KS_AUS fehlt im AUS_Element!")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(princ "\n FEHLER: Block _3D_AS_90_links nicht gefunden!")
|
||||||
|
)
|
||||||
|
|
||||||
|
;; === EIN_ELEMENT Maße extrahieren ===
|
||||||
|
(princ "\n Extrahiere EIN_Element Masse...")
|
||||||
|
(if (tblsearch "BLOCK" "_3D_ES_90_links")
|
||||||
|
(progn
|
||||||
|
(setq temp-obj (vla-InsertBlock modelspace
|
||||||
|
(vlax-3D-point '(0 0 0))
|
||||||
|
"_3D_ES_90_links" 1.0 1.0 1.0 0))
|
||||||
|
(setq ks-data (extract-ks-from-block temp-obj))
|
||||||
|
(vla-Delete temp-obj)
|
||||||
|
(setq ks-ein-pos nil ks-aus-pos nil)
|
||||||
|
(foreach item ks-data
|
||||||
|
(if (= (car item) "KS_EIN") (setq ks-ein-pos (cadr item)))
|
||||||
|
(if (= (car item) "KS_AUS") (setq ks-aus-pos (cadr item)))
|
||||||
|
)
|
||||||
|
(if (and ks-ein-pos ks-aus-pos)
|
||||||
|
(progn
|
||||||
|
(setq ein-dx (- (caaddr ks-aus-pos) (caadr ks-ein-pos)))
|
||||||
|
(setq ein-dy (- (cadr (caddr ks-aus-pos)) (cadr (cadr ks-ein-pos))))
|
||||||
|
(setq ein-dz (- (caddr (caddr ks-aus-pos)) (caddr (cadr ks-ein-pos))))
|
||||||
|
(princ (strcat "\n EIN_Element: dx=" (rtos ein-dx 2 0) ", dz=" (rtos ein-dz 2 0)))
|
||||||
|
)
|
||||||
|
(princ "\n FEHLER: KS_EIN/KS_AUS fehlt im EIN_Element!")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(princ "\n FEHLER: Block _3D_ES_90_links nicht gefunden!")
|
||||||
|
)
|
||||||
|
|
||||||
;; === Bogen-Maße extrahieren - ALLE Winkel ===
|
;; === Bogen-Maße extrahieren - ALLE Winkel ===
|
||||||
(princ "\n Extrahiere Bogen-Maße...")
|
(princ "\n Extrahiere Bogen-Maße...")
|
||||||
@@ -285,7 +337,9 @@
|
|||||||
(setq bogen-auf (reverse bogen-auf))
|
(setq bogen-auf (reverse bogen-auf))
|
||||||
(setq bogen-ab (reverse bogen-ab))
|
(setq bogen-ab (reverse bogen-ab))
|
||||||
|
|
||||||
;; ... restliche Initialisierung ...
|
(setq *lib-initialized* t)
|
||||||
|
(princ "\n Bibliothek erfolgreich initialisiert.")
|
||||||
|
(dbgreturn t)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -294,25 +348,24 @@
|
|||||||
|
|
||||||
;; Bogen-Maß aus Tabelle holen
|
;; Bogen-Maß aus Tabelle holen
|
||||||
(defun get-bogen-mass (tabelle winkel)
|
(defun get-bogen-mass (tabelle winkel)
|
||||||
|
(dbgf "get-bogen-mass")
|
||||||
(setq result nil)
|
(setq result nil)
|
||||||
(foreach item tabelle
|
(foreach item tabelle
|
||||||
(if (= (car item) winkel)
|
(if (= (car item) winkel)
|
||||||
(setq result (cdr item))
|
(setq result (cdr item))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
(if result
|
(if (null result)
|
||||||
result
|
(princ (strcat "\n FEHLER: Winkel " (itoa winkel) " nicht in Bogen-Tabelle!"))
|
||||||
(progn
|
|
||||||
(princ (strcat "\n FEHLER: Winkel " (itoa winkel) " nicht in Bogen-Tabelle!"))
|
|
||||||
nil
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
(dbgreturn result)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
;; TEIL 7: BLOCK EINFÜGEN MIT KS_EIN AUSRICHTUNG
|
;; TEIL 7: BLOCK EINFÜGEN MIT KS_EIN AUSRICHTUNG
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
(defun insert-block-by-ks (blockname einfuegepunkt / block-obj ks-data ks-ein ks-aus offset ausgang)
|
(defun insert-block-by-ks (blockname einfuegepunkt / block-obj ks-data ks-ein ks-aus offset ausgang)
|
||||||
|
(dbgf "insert-block-by-ks")
|
||||||
|
|
||||||
(if (or (null einfuegepunkt) (not (listp einfuegepunkt)))
|
(if (or (null einfuegepunkt) (not (listp einfuegepunkt)))
|
||||||
(progn
|
(progn
|
||||||
@@ -357,11 +410,11 @@
|
|||||||
(princ (strcat "\n KS_AUS: X=" (rtos (car ausgang) 2 2)
|
(princ (strcat "\n KS_AUS: X=" (rtos (car ausgang) 2 2)
|
||||||
", Z=" (rtos (caddr ausgang) 2 2)))
|
", Z=" (rtos (caddr ausgang) 2 2)))
|
||||||
|
|
||||||
ausgang
|
(dbgreturn ausgang)
|
||||||
)
|
)
|
||||||
(progn
|
(progn
|
||||||
(princ "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!")
|
(princ "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!")
|
||||||
einfuegepunkt
|
(dbgreturn einfuegepunkt)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -374,6 +427,7 @@
|
|||||||
bogen-x1 bogen-z1 bogen-x2 bogen-z2
|
bogen-x1 bogen-z1 bogen-x2 bogen-z2
|
||||||
abs-dz-AUS abs-dz-EIN L_GF L_VF cosα sinα nenner
|
abs-dz-AUS abs-dz-EIN L_GF L_VF cosα sinα nenner
|
||||||
winkel mass1 mass2 gueltig)
|
winkel mass1 mass2 gueltig)
|
||||||
|
(dbgf "berechne-alle-winkel")
|
||||||
|
|
||||||
;; Bibliothek muss initialisiert sein
|
;; Bibliothek muss initialisiert sein
|
||||||
(if (not *lib-initialized*)
|
(if (not *lib-initialized*)
|
||||||
@@ -489,13 +543,14 @@
|
|||||||
"° (kleinster verfuegbarer Winkel)"))
|
"° (kleinster verfuegbarer Winkel)"))
|
||||||
(princ "\n\n>>> KEIN passender Winkel gefunden!"))
|
(princ "\n\n>>> KEIN passender Winkel gefunden!"))
|
||||||
|
|
||||||
(list best-winkel best-L_GF best-L_VF ergebnis-liste)
|
(dbgreturn (list best-winkel best-L_GF best-L_VF ergebnis-liste))
|
||||||
)
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
;; TEIL 9: MODULE EINFÜGEN (GESAMTE ANLAGE)
|
;; TEIL 9: MODULE EINFÜGEN (GESAMTE ANLAGE)
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
(defun foerderanlage-einfuegen (deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt)
|
(defun foerderanlage-einfuegen (deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt)
|
||||||
|
(dbgf "foerderanlage-einfuegen")
|
||||||
(setq aktueller-punkt startpunkt)
|
(setq aktueller-punkt startpunkt)
|
||||||
|
|
||||||
;; Bibliothek initialisieren
|
;; Bibliothek initialisieren
|
||||||
@@ -637,7 +692,7 @@
|
|||||||
(princ "\n\n11/11: _3D_ES_90_links")
|
(princ "\n\n11/11: _3D_ES_90_links")
|
||||||
(setq endpunkt (insert-block-by-ks "_3D_ES_90_links" aktueller-punkt))
|
(setq endpunkt (insert-block-by-ks "_3D_ES_90_links" aktueller-punkt))
|
||||||
|
|
||||||
endpunkt
|
(dbgreturn endpunkt)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
@@ -647,6 +702,7 @@
|
|||||||
deltaL deltaH deltaX deltaY richtung ergebnis
|
deltaL deltaH deltaX deltaY richtung ergebnis
|
||||||
best-winkel L_GF L_GF1 L_GF2 L_VF ergebnis-liste
|
best-winkel L_GF L_GF1 L_GF2 L_VF ergebnis-liste
|
||||||
antwort verteilung-modus)
|
antwort verteilung-modus)
|
||||||
|
(dbgf "c:FOERDERANLAGE")
|
||||||
|
|
||||||
(princ "\n=========================================")
|
(princ "\n=========================================")
|
||||||
(princ "\n FÖRDERANLAGE GENERATOR v25.0")
|
(princ "\n FÖRDERANLAGE GENERATOR v25.0")
|
||||||
@@ -796,7 +852,7 @@
|
|||||||
(princ "\nVorgang abgebrochen.")
|
(princ "\nVorgang abgebrochen.")
|
||||||
)
|
)
|
||||||
|
|
||||||
(princ)
|
(dbgreturn nil)
|
||||||
)
|
)
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
;; START
|
;; START
|
||||||
|
|||||||
Reference in New Issue
Block a user