| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Kreis/Bogen in Liniesegmente (12235 mal gelesen)
|
invhp Ehrenmitglied V.I.P. h.c. MB Techniker, AE, WKZmacher
Beiträge: 5552 Registriert: 16.05.2002
|
erstellt am: 26. Mai. 2003 11:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen! hat einer von euch ein Tool oder Trick, wie ein Kreis oder Bogen in Liniensegmente aufgeteilt werden kann ähnlich der Darstellungen wie wenn AUFLÖS auf z.B. 10 gesetzt wird nur eben das tatsächlich Linie daraus werden? Danke für eure Hilfe!
------------------ Grüsse Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001 Autocad 2005-2010 Microstation V8 Photoshop CS4 + Camera Raw Nikon Capture NX2 Nikon D90
|
erstellt am: 26. Mai. 2003 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 26. Mai. 2003 13:13 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
Hallo Jürgen, folgende Zeilen erledigen das für dich. Einfach das Objekt wählen und dann die Anzahl der Segment eingeben. Programm erstellt dann eine LWPolylinie. Code:
(defun c:kbla (/ elem selem pts) (setq elem (entlast)) (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:")) (setq selem (vlax-ename->vla-object selem) pts (list (vlax-curve-getStartPoint selem)) ) (while (setq elem(entnext elem)) (setq pts(cons (cdr(assoc 10 (entget elem))) pts)) (entdel elem) ) (entmake(append(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") (cons 8 (vlax-get-property selem "LAYER")) '(100 . "AcDbPolyline") (cons 90 (length pts)) '(70 . 0) '(43 . 0.0) '(38 . 0.0) '(39 . 0.0)) (apply 'append (mapcar '(lambda (x) (list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0)) ) pts )) (list '(210 0.0 0.0 1.0)) ) ) )
Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! Neue Tool's im Free-&Download Zugang zum Download schon gesichert? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
invhp Ehrenmitglied V.I.P. h.c. MB Techniker, AE, WKZmacher
Beiträge: 5552 Registriert: 16.05.2002
|
erstellt am: 26. Mai. 2003 13:23 <-- editieren / zitieren --> Unities abgeben:
|
Christian Marx Mitglied
Beiträge: 218 Registriert: 11.12.2002 AutoCad LT 200x Athon 1600XP GeForce II MX400 256 DDR RAM 60GB Drive 16xDVD Aopen 24/10/40 Brenner TV-Karte WinTV PVR 250
|
erstellt am: 27. Mai. 2003 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
|
kirschi Mitglied
Beiträge: 38 Registriert: 13.02.2003 Windows XP Prof. Vers. 2002 SP 3; AutoCAD MAP 2007 und AutoCAD MAP 2011 installiert
|
erstellt am: 12. Feb. 2010 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
Habe bei meiner Suche nach der Umwandlung von Bögen in Segmente unter AutoCAD 2007 dieses tolle Tool gefunden! Nur ein Problem: Das letzte Segment wird nicht gezeichnet! Ehe ich mich jetzt in den Quellcode reinarbeite (mache nicht so oft LISP) meine erste Frage: Hat schon jemand die Lösung? Zweite Frage: kann man auch die Bogenlänge ausgeben? Schon mal schönen Dank Kirschi ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!
Zitat: Original erstellt von Brischke: Hallo Jürgen,folgende Zeilen erledigen das für dich. Einfach das Objekt wählen und dann die Anzahl der Segment eingeben. Programm erstellt dann eine LWPolylinie. Code:
(defun c:kbla (/ elem selem pts) (setq elem (entlast)) (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:")) (setq selem (vlax-ename->vla-object selem) pts (list (vlax-curve-getStartPoint selem)) ) (while (setq elem(entnext elem)) (setq pts(cons (cdr(assoc 10 (entget elem))) pts)) (entdel elem) ) (entmake(append(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") (cons 8 (vlax-get-property selem "LAYER")) '(100 . "AcDbPolyline") (cons 90 (length pts)) '(70 . 0) '(43 . 0.0) '(38 . 0.0) '(39 . 0.0)) (apply 'append (mapcar '(lambda (x) (list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0)) ) pts )) (list '(210 0.0 0.0 1.0)) ) ) )
Bei Fragen ... Grüße Holger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 12. Feb. 2010 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 12. Feb. 2010 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
... ich habe das mal angepasst, die Bogenlänge wird nun auch im Textfenster ausgegeben. Ich möchte nur mal anmerken, dass das hier wirklich ein gaaanz kleiner Schnell-Schuss ist, der (wie CADmium es bereits anspricht) nicht in allen Situationen das korrekte Ergebnis liefern wird. Dafür bedarf es eben etwas mehr Aufwand. Code: (defun c:kbla (/ elem selem pts selemType ptst pte bogenL) (setq elem (entlast)) (command "_.DIVIDE" (setq selem(car (entsel)))(getint "\nAnzahl der Segmente:")) (setq selemType (cdr(assoc 0 (entget selem)))) (if (member selemType '("ARC" "CIRCLE")) (progn (setq selem (vlax-ename->vla-object selem) ptst (vlax-curve-getStartPoint selem) pts (list ptst) pte (vlax-curve-getEndPoint selem) bogenL (vlax-get-Property selem (if (= "ARC" selemType)'ArcLength 'Circumference)) ) (while (setq elem(entnext elem)) (setq pts(cons (cdr(assoc 10 (entget elem))) pts)) (entdel elem) ) (setq pts (cons (if (= "ARC" selemType)pte ptst)pts)) (entmake(append(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") (cons 8 (vlax-get-property selem "LAYER")) '(100 . "AcDbPolyline") (cons 90 (length pts)) '(70 . 0) '(43 . 0.0) '(38 . 0.0) '(39 . 0.0)) (apply 'append (mapcar '(lambda (x) (list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0)) ) pts ) ) (list '(210 0.0 0.0 1.0)) ) ) (terpri) (princ bogenL) ) (alert "Keinen Kreis oder Bogen gewählt!") ) (princ) )
Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kirschi Mitglied
Beiträge: 38 Registriert: 13.02.2003 Windows XP Prof. Vers. 2002 SP 3; AutoCAD MAP 2007 und AutoCAD MAP 2011 installiert
|
erstellt am: 12. Feb. 2010 20:08 <-- editieren / zitieren --> Unities abgeben: Nur für invhp
|