Moin!
ich möchte das BKS über zwei Punkte ausrichten wobei diese eigentlich 3D sind. Die Ausrichtung erfolgt aber nur über die Punkte in der Fläche.
Hierzu habe ich ein Stück Code:
Code:
(defun blk_2 (blkname koord1 koord2 scale att / koord z1 z2 blk_z z_list koord3d)
(princ "\nToDo: Punktnummer setzen")
(princ "\nToDo: Layer setzen")
(princ "\nToDo: Ausrichtung der Blöcke")
(princ "\nToDo: Steuerung der Anzahl der Attribute")
(princ "\nP1:= ")(princ koord1)
(princ "\nP2:= ")(princ koord2)
(princ "\nP1 R:= ")(princ (car koord1))(princ " - H:= ")(princ (cadr koord1))
(princ "\nP2 R:= ")(princ (car koord2))(princ " - H:= ")(princ (cadr koord2))
;;Berechnung der Z-Höhe für den Block
(setq z1 (caddr koord1)
z2 (caddr koord2)
z_list (list z1 z2)
)
(princ "\nvor dem max z1: ")
(princ z1)
(princ " - z2: ")
(princ z2) (princ "\nz_list: ")(princ z_list)
(setq
blk_z (apply 'max z_list)
);end-setq
(princ "\nBlockhöhe: ")(princ blk_z)
(setq p1_2d (list (car koord1)(cadr koord1) )
p2_2d (list (car koord2)(cadr koord2) )
abst2d_p1_p2 (distance p1_2d p2_2d)
koord3d (list (/ abst2d_p1_p2 2) 0.0 blk_z)
)
(princ "\np1_2d: ")(princ p1_2d)
(princ "\np2_2d: ")(princ p2_2d)
(princ "\nPunktabstand 2D: ")(princ abst2d_p1_p2)
(princ "\nBlockkoord 3D local: ")(princ koord3d)
;;;setzen eines lokalen Koordinatensystems über die beiden Referenzpunkte
(command "_.ucs" "3p" p1_2d p2_2d "")
)
Das Ausrichten funktioniert soweit auch - nur es ist nicht gleich wenn die Basis über 2D-Punkte erfolgt im Vergleich zu 3D - bei letzterem ist das Ergebnis nicht das gewünschte.
Hier einmal das Protokoll - 2D:
Zitat:
P1:= (635.671 230.667 0.0)
P2:= (638.648 233.274 0.0)
P1 R:= 635.671 - H:= 230.667
P2 R:= 638.648 - H:= 233.274
vor dem max z1: 0.0 - z2: 0.0
z_list: (0.0 0.0)
Blockhöhe: 0.0
p1_2d: (635.671 230.667)
p2_2d: (638.648 233.274)
Punktabstand 2D: 3.95705
Blockkoord 3D local: (1.97853 0.0 0.0)
... und hier für 3D:
Zitat:
P1:= (635.671 230.667 10.0)
P2:= (638.648 233.274 20.0)
P1 R:= 635.671 - H:= 230.667
P2 R:= 638.648 - H:= 233.274
vor dem max z1: 10.0 - z2: 20.0
z_list: (10.0 20.0)
Blockhöhe: 20.0
p1_2d: (635.671 230.667)
p2_2d: (638.648 233.274)
Punktabstand 2D: 3.95705
Blockkoord 3D local: (1.97853 0.0 20.0)
Die Auswertung von Z kann ignoriert werden...
Kann mir einer von Euch weiterhelfen oder hat eine gute Idee für eine andere Vorangehensweise ??
Gruß Jan :-)
------------------
jan :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP