| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Schräge Linien in Script wählen (636 mal gelesen)
|
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Jun. 2007 08:51 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, habe schon im Forum gewühlt, aber iwie nichts passendes gefunden, deshalb so: ich suche nach einer einfachen Möglichkeit, schräge Linien (Winkel 45°)aus einem Layer (35C) zu filtern und das mit einem Script, um diese dann auf einen anderen Layer(Hatch25C) zu legen in derselben Zeichnung. Hintergrund ist der, dass wir Zeichnungen von einem anderen Programm als .dwg exportieren, auf denen dann aber leider die Umrisslinien und die Linien für die Schraffuren von Objekten auf demselben Layer liegen, was nicht sein darf. Da es eine Menge Zeichnugen sind, möchte ich das Ganze nach Möglichkeit nicht zu Fuss mit _qselect machen. Freue mich über Tipps, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YanB Mitglied Bauzeichner / BIW-Student
Beiträge: 11 Registriert: 13.06.2007 AutoCAD 2008 C2D E6400 2 GB Ram GeForce 7500LE 512MB
|
erstellt am: 14. Jun. 2007 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
bist du denn sicher, dass die Schraffuren nur als Linien gezeichnet sind? nicht, dass du dir die Mühe machst, und ein Skript schreibst, dass schräge Linien auswählt, nur um dann festzustellen, dass es nicht funktioniert, weil es gar keine Linien sind... Gruß, Yan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Jun. 2007 09:33 <-- editieren / zitieren --> Unities abgeben:
|
Caladia Ehrenmitglied V.I.P. h.c.
Beiträge: 2546 Registriert: 04.03.2002 ACAD2009 ACAD2010 SP2 ACAD2011 SP1 ABDS-S 2012 SP2 ABDS-S 2013 SP2 ABDS-S 2014 SP1 ABDS-S 2015 SP2 ABDS-S 2016 Expresstools A3-Makroboard 16-Tasten Lupe Impression 3 Win7 64bit IE11 Firefox Office2003 SP3
|
erstellt am: 14. Jun. 2007 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
|
YanB Mitglied Bauzeichner / BIW-Student
Beiträge: 11 Registriert: 13.06.2007 AutoCAD 2008 C2D E6400 2 GB Ram GeForce 7500LE 512MB
|
erstellt am: 14. Jun. 2007 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
ChrisSin hat ja oben schon erwähnt, dass er _qselect nicht benutzen möchte (ist das gleiche wie sauswahl). andererseits wäre es eine sehr sinple möglichkeit, damit auszuwälen, und dann alles aud einen vorher erstellten Layer zu schieben geht ja blitzschnell. wenn du das bei jeder Datei machst, dauert es ja wahrscheinlich nicht wirklich länger als jedesmal die Routine zu laden und auszuführen. um wie viele Dateien handelt es sich denn? Die Routine dafür wäre ja andererseits auch nicht wirklich kompliziert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Jun. 2007 10:02 <-- editieren / zitieren --> Unities abgeben:
@caladia ja, das mit der sauswahl wäre mein letzter Rettungsanker ... Die Sache ist nur: Es handelt sich nicht nur um eine Zeichnung, bei der das geändert werden muss und es ist nicht die einzige Änderung, d.h. das script habe ich zum größten Teil schon fertig, müsste es aber um diese "schräge Linien"-Auswahl erweitern... Christian 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: 14. Jun. 2007 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin: @caladia ja, das mit der sauswahl wäre mein letzter Rettungsanker ...Die Sache ist nur: Es handelt sich nicht nur um eine Zeichnung, bei der das geändert werden muss und es ist nicht die einzige Änderung, d.h. das script habe ich zum größten Teil schon fertig, müsste es aber um diese "schräge Linien"-Auswahl erweitern... Christian
.. dann wirst du wohl auf einen entsprechenden Lispbaustein, den du innerhalb deines Scriptes laden und ausführen läßt, zurückgreifen müssen... ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Jun. 2007 10:33 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: .. dann wirst du wohl auf einen entsprechenden Lispbaustein, den du innerhalb deines Scriptes laden und ausführen läßt, zurückgreifen müssen...
...ja, nur Lisp kann ich eigentlich nicht.Ich habe daran aber auch schon gedacht und entsprechendes als download gesucht und einen auf CADlon.de gefunden: die gewählten Linie werden dabei aber gelöscht.. 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: 14. Jun. 2007 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von ChrisSin: ...ja, nur Lisp kann ich eigentlich nicht.Ich habe daran aber auch schon gedacht und entsprechendes als download gesucht und einen auf CADlon.de gefunden: die gewählten Linie werden dabei aber gelöscht..
.. und wenn du mal bei cadlon.de anfragst, ob dir der Programm autor das evtl. umschreibt ? ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisSin Mitglied Bauingenieur
Beiträge: 17 Registriert: 09.11.2006 ACAD2002
|
erstellt am: 14. Jun. 2007 10:56 <-- editieren / zitieren --> Unities abgeben:
|
YanB Mitglied Bauzeichner / BIW-Student
Beiträge: 11 Registriert: 13.06.2007 AutoCAD 2008 C2D E6400 2 GB Ram GeForce 7500LE 512MB
|
erstellt am: 14. Jun. 2007 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
hier ist das !fast! komplette Skript: ---------------------------------------- (defun C:LayerWechsel() (setq counter 0) (setq eset(ssget "X")) (while (< counter (sslength eset)) (setq en(ssname eset counter)) (setq elist(entget en)) (if (BEDINGUNGEN) (setq elist(subst (cons 8 "neuer_Layer")(assoc 8 elist) elist)) (entmod elist)) (setq counter(+ counter 1)) ) ) ---------------------------------------- Damit das ganze funktioniert müssen noch die Bedingungen eingetragen werden: Groupcode stelle 0 = "LINE" und (= abs(- X_Koordinate_ANFANGSPUNKT X_Koordinate_ENDPUNKT) abs(- Y_Koordinate_ANFANGSPUNKT Y_Koordinate_ENDPUNKT)) Dies gilt natürlich nur für Koordinaten im ersten und dritten Quadranten, im zweiten und vierten wäre die Bedingung komplizierter. Aber wenn die Dateien z.B. Gauss-Krüger-Koordinaten habe, sind sie ja im ersten. Das einzige Problem was ich habe: Wie komme ich an die Anfangs- und Endpunktkoordinaten? Und die Groupcode Stelle 0? Im dxf-Group-Code sind diese ja für jedes Element angegeben, aber z.B. mit (nth xy (ELEMENT)) gibt er mir nur den Namen des Elementes bei 0 und ein Paar Koordinaten bei 1 an, die zwar auf der Linie ligen, aber meiner Meinung nach keinen relevanten Punkt beschreiben. Wo liegt mein Denkfehler?
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: 14. Jun. 2007 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Ok .. gerade Mittagspause .. (defun LHATCHLAY( ANG NEWLAYER / COUNT BLOCK ITEM NAME) (vl-load-com) (if(and(numberp ANG)(=(type NEWLAYER)'STR)(tblobjname "LAYER" NEWLAYER)) (vlax-for BLOCK (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vlax-for ITEM BLOCK (and(not(vl-catch-all-error-p (setq NAME (vl-catch-all-apply 'vla-get-objectname (list ITEM) ) ) ) ) (=(strcase NAME)"ACDBLINE") (not(vl-catch-all-error-p (setq LANG (vl-catch-all-apply 'vla-get-angle (list ITEM) ) ) ) ) (equal LANG ANG 0.00000001) (not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-layer (list ITEM NEWLAYER) ) ) ) ) ) ) ) ) Aufruf mit (LHATCHLAY (*(/ 45 180.0)Pi) "0") setzt alle LINIEN mit 45° auf LAYER "0"
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YanB Mitglied Bauzeichner / BIW-Student
Beiträge: 11 Registriert: 13.06.2007 AutoCAD 2008 C2D E6400 2 GB Ram GeForce 7500LE 512MB
|
erstellt am: 14. Jun. 2007 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
tja, wär dann ja damit eigentlich erledigt. allerdings sollte man darauf achten, dass die 225° Linien damit noch nicht umgesetzt sind. ebenso 315° und 135° je nachdem wie die Schraffuren angelegt wurden, sind diese 3 ja auch evtl. umzupacken.
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: 14. Jun. 2007 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von YanB: tja, wär dann ja damit eigentlich erledigt.allerdings sollte man darauf achten, dass die 225° Linien damit noch nicht umgesetzt sind. ebenso 315° und 135° je nachdem wie die Schraffuren angelegt wurden, sind diese 3 ja auch evtl. umzupacken.
ok, dann eben Aufruf mit (LHATCHLAY (*(/ 225 180.0)Pi) "0") für 225° .. usw..
oder(or(equal (*(/ 45 180.0)Pi) ANG 0.00000001) (equal (*(/ 135 180.0)Pi) ANG 0.00000001) (equal (*(/ 225 180.0)Pi) ANG 0.00000001) (equal (*(/ 315 180.0)Pi) ANG 0.00000001) ) einbauen ... das sollte ja nun nicht soooo schwer sein?! ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YanB Mitglied Bauzeichner / BIW-Student
Beiträge: 11 Registriert: 13.06.2007 AutoCAD 2008 C2D E6400 2 GB Ram GeForce 7500LE 512MB
|
erstellt am: 14. Jun. 2007 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
|
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: 14. Jun. 2007 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisSin
Zitat: Original erstellt von YanB:
da sieht mein kleines skript jetzt ziemlich arm aus
Kein Kommentar .. aber wenn du daran arbeiten willst, sei dir DAS BUCH wärmstens empfohlen..
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |