Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  3D Polylinie verbinden...

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  3D Polylinie verbinden... (2710 mal gelesen)
Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


Sehen Sie sich das Profil von Proxy an!   Senden Sie eine Private Message an Proxy  Schreiben Sie einen Gästebucheintrag für Proxy

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, Monitore, ...

erstellt am: 09. Mai. 2004 04:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

einer hat mal auf www.autocad-magazin.de gefragt wie man 3DPolylinien (oder auch andere Objekte) im 3D verbinden kann ... das habe ich gefunden. Vorsicht ... die Funktion zerhaut die Originalobjekte und setzt an ihre Stelle das neue Zielobjekt (3DPolylinie) ein.

Code:

(defun LITPX (sss / li elem pkt1 pkt2 pliste)
(setq pliste nil)
(setq elem sss)
(command "_UCS" "_W")
(setq pkt1 (cdr (assoc 10 elem)))
(setq pkt2 (cdr (assoc 11 elem)))
(setq pliste (append pliste (list pkt1)))
(setq pliste (append pliste (list pkt2)))
(setq ppliste (append ppliste (list pliste)))
)
(defun LWTPX(sss / lwl elem pt pktx pkty pktz pkt pliste)
(setq elem sss)
(setq nv (cdr (assoc 210 elem)))
(setq tra (cdr (assoc 38 elem)))
(command "_UCS" "_W")
(command "_UCS" "_N" "_ZA" "" nv)
(setq v (list 0 0 tra))
(command "_UCS" "_O" v)
(setq pliste nil)
(foreach pt elem 
(if (= 10 (car pt))
(progn
(setq pktx (cadr pt))
(setq pkty (caddr pt))
(setq pktz 0)
(setq pkt (list pktx pkty pktz))
(setq pkta (trans pkt 1 0))
(setq pliste (append pliste (list pkta)))
)
)

)
(command "_UCS" "_W")
(setq ppliste (append ppliste (list pliste)))
)
(defun PLTPX (sss /  pl vertex subent pliste)
(setq pl1 (ssname auswahl i))
(command "_UCS" "_W")
(setq pliste nil)                     
(setq subent (entnext pl1))
(while (/= (cdr (assoc 0 (entget subent))) "SEQEND")
(setq vertex (cdr (assoc 10 (entget subent))))
(setq subent (entnext subent))
(setq pliste (append (list vertex) pliste))
)                                     
(setq ppliste (append ppliste (list pliste)))
)
(defun SPTPX (sss / elem pt pktx pkty pktz pkt ll pliste)
(setq elem sss)
(command "_UCS" "_W")
(setq ll (length elem))
(setq pliste nil)
(foreach pt elem 
(if (= 10 (car pt))
(progn
(setq pktx (cadr pt))
(setq pkty (caddr pt))
(setq pktz (cadddr pt))
(setq pkt (list pktx pkty pktz))
(setq pkt (list pkt))
(setq pliste (append pliste  pkt))
)
)
)
(setq ppliste (append ppliste (list pliste)))
)
(defun ARTPX(sss / bog aufl elem ra pm aw ew sw ii pt pliste)
(setq elem sss)
(setq bog (ssname auswahl i))
(command "_UCS" "_W")
(command "_UCS" "_E" bog)
(setq pliste nil)

(setq ra        (cdr (assoc 40 elem)))
(setq pm        (list 0 0))
(setq aw        (cdr (assoc 50 elem)))
(setq ew        (cdr (assoc 51 elem)))
(if (< ew aw)
(setq ew (+ (* 2 pi) ew))
)
(setq aufl 10)
(if (> (- ew aw) (* 0.5 pi)) (setq aufl 20))
(if (> (- ew aw) pi) (setq aufl 30))
(if (> (- ew aw) (* 1.5 pi)) (setq aufl 40))
(setq sw        (/  (- ew aw ) aufl))
(setq aw 0)
(setq sw        (abs sw))
(setq ii 0)
(while (<= ii aufl)
(setq pt (polar pm (+ aw (* ii sw)) ra))
(setq ptw (trans pt 1 0))
(setq pliste (append pliste (list ptw)))
(setq ii (+ ii 1))
)
(command "_UCS" "_W")
(setq ppliste (append ppliste (list pliste)))
)
(defun ELTPX(sss / elli aufl elem pm p1 zr fak aw ew
pmx pmy pmz p1x p1y p1z zrx zry zrz
p1w zrw p0 a b sw ii pt pliste)
(setq elem sss)
(setq pm        (cdr  (assoc 10 elem)))
(setq p1        (cdr  (assoc 11 elem)))
(setq zr        (cdr (assoc 210 elem)))
(setq fak      (cdr (assoc 40 elem)))
(setq aw        (cdr (assoc 41 elem)))
(setq ew        (cdr (assoc 42 elem)))

(setq pmx      (car pm))
(setq pmy      (cadr pm))
(setq pmz      (caddr pm))     
(setq p1x      (car p1))
(setq p1y      (cadr p1))
(setq p1z      (caddr p1))     
(setq zrx      (car zr))
(setq zry      (cadr zr))
(setq zrz      (caddr zr))   
(setq p1w (list (+ pmx p1x) (+ pmy p1y) (+ pmz p1z))) 
(setq zrw (list (+ pmx zrx) (+ pmy zry) (+ pmz zrz))) 
(setq p0 (list 0 0 0))
(setq a (distance p0 p1))
(setq b (* fak a))
(command "_UCS" "_3P"  pm p1w zrw)
(command "_UCS" "_X" (- (* 0.5 pi)))
(if (< ew aw)
(setq ew (+ (* 2 pi) ew))
)
(setq aufl 10)
(if (> (- ew aw) (* 0.5 pi)) (setq aufl 20))
(if (> (- ew aw) pi) (setq aufl 30))
(if (> (- ew aw) (* 1.5 pi)) (setq aufl 40))
(setq sw        (/  (- ew aw ) aufl))
(setq pliste nil)
(setq ii 0)
(while (<= ii aufl)
(setq ptx  (* a (cos(+ aw (* ii sw)))))
(setq pty  (* b (sin(+ aw (* ii sw)))))
(setq pt (list ptx pty 0))
(setq ptw (trans pt 1 0))
(setq pliste (append pliste (list ptw)))
(setq ii (+ ii 1))
)
(command "_UCS" "_W")
(setq ppliste (append ppliste (list pliste)))
)
(defun SUCHEN_ANHAENGEN_LOESCHEN(uli)
(setq flag F)
(setq i -1)
(while (and (< i (length unord_liste)) (= flag F))
(progn
(setq i (+ 1 i))
(setq po1 (car ord_liste) po2 (last ord_liste))
(setq pu (nth i unord_liste))
(setq pu1 (car pu) pu2 (last pu))
(if (> eps (distance po2 pu1))
(progn
(setq ord_liste (append ord_liste (cdr pu)))
(setq unord_liste (apply 'append (subst nil (list pu) (mapcar 'list unord_liste))))
(setq flag T)
)
)
(if (and (> eps (distance po2 pu2)) (= flag F))
(progn
(setq ord_liste (append ord_liste (cdr (reverse pu))))
(setq unord_liste (apply 'append (subst nil (list pu) (mapcar 'list unord_liste))))
(setq flag T)
)
)
(if (and (> eps (distance po1 pu1)) (= flag F))
(progn
(setq ord_liste (append (reverse ord_liste) (cdr pu)))
(setq unord_liste (apply 'append (subst nil (list pu) (mapcar 'list unord_liste))))
(setq flag T)
)
)
(if (and (> eps (distance po1 pu2)) (= flag F))
(progn
(setq ord_liste (append (reverse ord_liste) (cdr (reverse pu))))
(setq unord_liste (apply 'append (subst nil (list pu) (mapcar 'list unord_liste))))
)
)
)                                     
)                                             

unord_liste
)
(defun C:PEDIT3D()
(alert "DEMO-VERSION
\nask scj.schulz@t-online.de\nfor the full version program")
(setq osmode_old (getvar "OSMODE"))
(command "OSMODE" 0)
(setq aunits_old (getvar "AUNITS"))
(command "_AUNITS" 3)
(setq eps 0.01)                         
(setq ppliste nil)
(setq auswahl (ssget))
(setq n_auswahl (sslength auswahl))
(setq i 0)
(while (< i n_auswahl)
(progn
(setq typ (cdr (assoc 0 (entget (ssname auswahl i)))))
(if (= typ  "LINE")            (LITPX(entget(ssname auswahl i))))
(if (= typ  "LWPOLYLINE")      (LWTPX(entget(ssname auswahl i))))
(if (= typ  "POLYLINE")        (PLTPX(entget(ssname auswahl i))))
(if (= typ  "SPLINE")          (SPTPX(entget(ssname auswahl i))))
(if (= typ  "ARC")              (ARTPX(entget(ssname auswahl i))))
(if (= typ  "ELLIPSE")          (ELTPX(entget(ssname auswahl i))))
(setq i (+ 1 i))
)
)
(setq unord_liste ppliste)
(setq ord_liste (car unord_liste))
(setq unord_liste (cdr unord_liste))

(while (< 0 (length unord_liste))
(SUCHEN_ANHAENGEN_LOESCHEN unord_liste)
)

(command "_3dpoly")
(foreach pt ord_liste (command pt))
(command nil)
(command "OSMODE" osmode_old)
(command "_AUNITS" aunits_old)
)


------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

captainfritz
Mitglied
Bauingenieur/Wasserbau


Sehen Sie sich das Profil von captainfritz an!   Senden Sie eine Private Message an captainfritz  Schreiben Sie einen Gästebucheintrag für captainfritz

Beiträge: 270
Registriert: 07.05.2004

AutoCAD 2005/2006/2007 Map, AutoTerrain, bbsoft, Geotools, Windows XP

erstellt am: 10. Mai. 2004 08:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich


iconsgeotools.JPG

 
Moin, ich möchte nicht werben für die geotools - hab ich auch nix von - programmierer sitzt in Indien (und da war ich noch nich mal), aber mit denen kann 3D polylinien verbinden. Zusätzlich z koos interpolieren, Böschungsschraffen, textfiles einlesen und viele viele tools (siehe jpg), die hier im forum auch schon angefragt wurden.
download der textversion http://www.4d-technologies.com/geotools/index.htm

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz