| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: weiterführende Bemaßung (2261 mal gelesen)
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 10. Dez. 2013 13:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Hab da ein Lisp versucht umzubauen. Das erst mal funktioniert alles einwandfrei. Es wird der Layer umgestellt und bei der ausgewählten Bemaßung weiter bemaßt. Beim zweiten Aufruf wird zwar der Layer richtig umgestellt aber die Bemaßung fängt immer bei der zuletzt erstellen Bemaßung an. Woran kann das liegen? Bitte um Hilfe. Hier das Lisp: ;http://www.cadtutor.net/forum/showthread.php?30611-offset-to-layer ;Ursprüngliches Lisp von Lee Mac (defun c:mybemweiter ( / ent lay old ) (if (setq ent (car (entsel "\nPick Objekt für bemweiter: "))) (progn (setq lay (cdr (assoc 8 (entget ent))) old (getvar 'clayer) ) (vl-cmdf "_.-layer" "_T" lay "_S" lay "" "bemweiter" "_L" "_C" ) (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\")) (setvar 'clayer old) ) ) (princ) ) lg. Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 10. Dez. 2013 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 10. Dez. 2013 13:54 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm! Danke für deine schnelle Antwort. Das ent hab ich schon probiert. Leider springt mir das Maß trotzdem auf das zuletzt gesetzte Maß und fährt von dort weiter. Es wird immer das letzte genommen, egal ob ich "L" oder ent einsetze. lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedelzastrow Mitglied Architekt / Bauzeichner
Beiträge: 993 Registriert: 05.07.2007 Win XP AutoCAD 2006 AutoCAD 2009 AutoCAD 2013 LT
|
erstellt am: 10. Dez. 2013 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 10. Dez. 2013 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 10. Dez. 2013 14:27 <-- editieren / zitieren --> Unities abgeben:
Hallo @ Robert Ja hab ich gemacht. Hab es nicht vergessen! Danke! @ cadffm Hab n bei entsel hinzugefügt. Leider kein Erfolg. Es wird immer noch von der letzten Bemaßung aus weiter bemaßt. lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 10. Dez. 2013 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 10. Dez. 2013 14:41 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm Ja das erst mal geht es ja. Es wird der Layer von der ausgewählten Bemaßung übernommen. Nur wenn ich das Lisp wiederhole, dann nimmt es das letzte erstelle Maß. Richtig wäre wenn das ausgewählte Maß übernommen würde. Hmmmmmmmmm.....grübel grübel lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 10. Dez. 2013 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martin, ein Test in der Befehlszeile zeigte folgendes Verhalten: Beim ersten Aufruf von BEMWEITER wird eine Bemaßung abgefragt, von der aus weiter bemaßt werden soll. Bei jedem weiteren Aufruf von BEMWEITER beginnt die Weiterbemaßung automatisch bei der zuletzt erstellten Bemaßung, es sei denn man wählt die Option [Wählen] / [_SELECT], dann wird wieder eine Bemaßung zum Beginn der Weiterbemaßung abgefragt. [/edit] Laut Hilfe wird von der letzten in dieser Sitzung erstellten Bemaßung weitergemacht, oder, wenn noch keine Bemaßung erstellt wurde, wird eine Startbemaßung abgefragt. [edit\] Hier wäre also zu prüfen, ob es schon mal ein BEMWEITER gab (irgendeine Sysvar??), und dann die gewählte Bemaßung an den Befehl als neuer Start zu übergeben. HTH Gruß Thomas [Diese Nachricht wurde von spider_dd am 10. Dez. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 11. Dez. 2013 06:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Danke für deine Hilfe. Sehr gut beobachtet. Genau so ist es. Nur bei diesem Lisp sollte das ausgewählte Objekt "ent" (ist immer eine Bemaßung) als weiterführende Bemaßung übergeben werden, nich automatisch die letzte. Hat da jemand vielleicht eine Idee? lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 11. Dez. 2013 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martin, das ist ja das Problem. Falls noch keine Bemaßung erstellt wurde, also beim 1. Mal, fragt BEMWEITER von allein nach der Bemaßung, an die angeschlossen werden soll. Ab dem zweiten Mal musst Du BEMWEITER mit den Optionen _s die_gewählte_Bemaßung füttern. Wie man das erste von zweiten Mal unterscheidet? [Schulterzucken] Aber irgendwie muss man es rausbekommen können. Mal sehen, ob hier noch jemand eine Idee dazu hat. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 11. Dez. 2013 08:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas. Es ist bei mir schon immer eine Bemaßung vorhanden wenn ich dieses Lisp aufrufen will. Wenn ich die Zeile auf --> (vl-cmdf "_.-layer" "_T" lay "_S" lay "" "bemweiter" "_s" ent ) ändere kommt folgende Fehlermeldung: Befehl: bemweiter Anfangspunkt der zweiten Hilfslinie angeben oder [Zurück/Wählen] <Wählen>: _s Weiterzuführende Bemaßung wählen: <Unzulässig Objektname: FFB62270> Dann wird auf die Angabe einer Bemaßung gewartet. Wie könnte man das wohl lösen? lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 11. Dez. 2013 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 11. Dez. 2013 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martin, hab mal ein bisschen "rumgespielt". Du musst an BEMWEITER nach _select nicht das Objekt sondern den Pickpunkt übergeben, dann klappts. Also: statt: (setq ent (car (entsel "\nPick Objekt für bemweiter: ")) dieses hier: (setq pp (cadr (entsel "\nPick Objekt für bemweiter: "))) und dann: (... "bemweiter" "_s" pp) Probiers mal aus. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 11. Dez. 2013 09:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas. Wenn das Lisp ändere auf (setq ent (cadr (nentsel "\nPick Objekt für bemweiter: "))) dann folgt folgende Fehlermeldung: Fehler: Fehlerhafter Argumenttyp: lentityp (-5331.17 -352.617 0.0) lg. martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 11. Dez. 2013 09:50 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 11. Dez. 2013 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Zitat: Original erstellt von MARTINLE:
Wenn das Lisp ändere auf (setq ent (cadr (nentsel "\nPick Objekt für bemweiter: ")))dann folgt folgende Fehlermeldung: Fehler: Fehlerhafter Argumenttyp: lentityp (-5331.17 -352.617 0.0)
Hallo Martin, Ok ent brauchst Du ja um den Layer zu ermitteln (geht von einem Punkt natürlich nicht. Du brauchst also beide Infos von entsel, das Objekt und den Punkt, also das folgende: Code:
(defun c:mybemweiter ( / elem ent ppt lay old ) (if (setq elem (entsel "\nPick Objekt für bemweiter: ")) (progn (setq ent (car elem) ppt (cadr elem) lay (cdr (assoc 8 (entget ent))) old (getvar 'clayer) ) (vl-cmdf "_.-layer" "_T" lay "_S" lay "" "bemweiter" "_S" ppt ) (while (= 1 (logand 1 (getvar 'cmdactive))) (vl-cmdf "\\")) (setvar 'clayer old) ) ) (princ) )
Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 11. Dez. 2013 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas! Genau! Volltreffer!!!!!!!!! Super!!! Danke!! Genau das war es. Dafür gibt es die max. Uuuus. Jetzt muß ich mir mal in Ruhe den Code ansehen um zu verstehen warum es jetzt so toll funktioniert. lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |