| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: Blockattribute drehen (3367 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 01. Aug. 2011 13:35 <-- editieren / zitieren --> Unities abgeben:
Durch ein wenig rumstöbern bin ich dieses Lisp gestossen, womit ich Blöcke drehen kann. Allerdings würde ich es mir wünschen, dass auch die Blockattribute mitgedreht werden. Funktioniert das nur mit Hilfe von ssget und Bestimmung eines Auswahlsatzes oder kann ich in die Variable ele noch mit den Attribut füllen? (DEFUN c:rb ( / ele wi ) (SETQ ele (ENTGET (CAR (ENTSEL "Block wählen: ")))) (COMMAND "_ucs" "_object" (CDR(ASSOC -1 ele))) (SETQ wi (+ (CDR(ASSOC 50 ele)) (GETANGLE (TRANS (CDR (ASSOC 10 ele)) 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele) ); setq (entmod ele) (COMMAND "_ucs" "_w") )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Aug. 2011 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 01. Aug. 2011 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
hallo cadplayer, um an die atrribute zu kommen: Code:
(setq en (car (entsel "block waehlen: "))) (setq attr-array (vla-getAttributes (vlax-ename->vla-object en))) (setq attr-lst (vlax-safearray->list (vlax-variant-value attr-array))) (mapcar '(lambda(attr) (print (vlax-vla-object->ename attr)) ) attr-lst )
gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 01. Aug. 2011 15:52 <-- editieren / zitieren --> Unities abgeben:
Danke für Eure Anworten @Dorfy attsync ist doch meiner Meinung nach nur möglich, wenn man Blockeigenschaften von einem Original zur Kopie überträgt. @Marco ich hab mal versucht, dass einzubauen, funktioniert so nicht richtig Ich weiss nicht genau, was Deine Zeilen bewirken? (DEFUN c:rb ( / ele wi ) (vl-load-com) (SETQ ele (ENTGET (CAR (ENTSEL "Block wählen: "))) attr-array (vla-getAttributes (vlax-ename->vla-object ele)) attr-lst (vlax-safearray->list (vlax-variant-value attr-array))) (COMMAND "_ucs" "_object" (CDR(ASSOC -1 ele))) (SETQ wi (+ (CDR(ASSOC 50 ele)) (GETANGLE (TRANS (CDR (ASSOC 10 ele)) 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele) ); setq (entmod ele) (COMMAND "_ucs" "_w") )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 sw: Win7-x64 Office 365 ProPlus C3D (& LT ) ET; DACH; Extensions ------------------- hw: FX3800 i5 CPU 670 8GB RAM
|
erstellt am: 01. Aug. 2011 15:55 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 01. Aug. 2011 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
also, was passiert: (setq en (car (entsel "block waehlen: "))) sollte klar sein (setq attr-array (vla-getAttributes (vlax-ename->vla-object en))) vom insert-objekt werden alle attribut-objekte ausgelesen. was man bekommt, ist ein array. (setq attr-lst (vlax-safearray->list (vlax-variant-value attr-array))) das array wird in eine liste mit attribut-objekten umgewandelt (vlax-vla-object->ename attr) umwandeln eines attribut-objekts in elementnamen. auf diesen entget angewandt, siehst du die elementdaten des attributes und kannst da eventuelle aenderungen vornehmen. mehr passiert nicht. ps: debugger anschmeissen hilft. gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Aug. 2011 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: Danke für Eure Anworten @Dorfy attsync ist doch meiner Meinung nach nur möglich, wenn man Blockeigenschaften von einem Original zur Kopie überträgt. ...
ähm - nö wie rübe schin sagt, einfach mal probieren... ungetestet so Code: (DEFUN c:rb (/ ele wi ) (SETQ ele (CAR (ENTSEL "Block wählen: "))) (setq bname (vla-get-Name (vlax-ename->vla-object ele))) (SETQ ele (ENTGET ele)) (COMMAND "_ucs" "_object" (CDR (ASSOC -1 ele))) (SETQ wi (+ (CDR (ASSOC 50 ele)) (GETANGLE (TRANS (CDR (ASSOC 10 ele)) 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele) ) (entmod ele) (COMMAND "_ucs" "_w") (command "._attsync" "_N" bname) (princ) )
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 01. Aug. 2011 16:46 <-- editieren / zitieren --> Unities abgeben:
@runkelrübe Danke - wusste nur nicht richtig wie ich attsync einsetzen sollte - so geht es jetzt auch bei mir (DEFUN c:rb ( / ele wi ) (SETQ ele (ENTGET (CAR (ENTSEL "Block wählen: ")))) (COMMAND "_ucs" "_object" (CDR(ASSOC -1 ele))) (SETQ wi (+ (CDR(ASSOC 50 ele)) (GETANGLE (TRANS (CDR (ASSOC 10 ele)) 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele) ); setq (entmod ele) (progn (command "attsync" "s" (entlast) "Y") (COMMAND "_ucs" "_w") ) ) @neurosis Ich anwende den Vlisp-edtor noch nicht so toll. Beim debuggen wundert es mich warum immmer die ersten Menubefehle ausgeblendet sind Step into (F8) Step over (shift-F8) Step out (ctrl-shift-F8) ... (was bedeuten die eigentlich) @Dorfy Du warst jetzt schneller mit posten - Danke aber ich bekam Deine Lösung nicht richtig zum Laufen [Diese Nachricht wurde von cadplayer am 01. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 01. Aug. 2011 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
dafuer musst du in der funktion breakpoints an der stelle setzen, ab der du die funktion anhalten willst. wenn die funktion angehalten wurde, kannst du dir z.b. bei variablen anschauen, was drin ist. beschaeftige dich mal damit, ist auf jeden fall hilfreich. F8 bedeutet z.b. dass du schritt fuer schritt ab dem weitergehst (von klammerpaar zu klammerpaar). gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 01. Aug. 2011 editiert.] [Diese Nachricht wurde von neurosis am 01. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 01. Aug. 2011 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... @Dorfy Du warst jetzt schneller mit posten - Danke aber ich bekam Deine Lösung nicht richtig zum Laufen
lass mich raten (vl-load-com) fehlt?! sollst du dir mal in die acad.lsp packen oder irgendwo, wo es immer mitgeladen wird bei mir läuft es - wenn man es so nennen kann sollstest mal noch ein Paar Abfangseile einbauen Edit: greift dein entlast immer? auch wenn dein Block nicht das letzte Objekt ist? nein - macht es nicht... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 01. Aug. 2011 editiert.] [Diese Nachricht wurde von Dorfy am 02. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 02. Aug. 2011 01:08 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 09:35 <-- editieren / zitieren --> Unities abgeben:
(DEFUN c:rb ( / ele wi ) (if (setq ele (ENTSEL "Block wählen: ") pkt (CDR (ASSOC 10 ele))) (progn (COMMAND "_ucs" "_object" (CDR (ASSOC -1 ele))) (COMMAND "_rotate" ele "" pkt "") ) ) ) Mein Versuch es mit rotate in Angriff zu nehmen - warum will es so nicht funktionieren? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 02. Aug. 2011 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
ungetestet so: Code:
(DEFUN c:rb ( / en ele wi) (if (setq en (car (ENTSEL "Block wählen: ")) ele (entget en) pkt (CDR (ASSOC 10 ele))) (progn (COMMAND "_ucs" "_object" (CDR (ASSOC -1 ele))) (COMMAND "_rotate" en "" pkt "") ; -> muss hier nicht noch ein zweiter punkt angegeben werden? ) ) )
gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 10:06 <-- editieren / zitieren --> Unities abgeben:
Danke, dass du hier Ordnung reingebracht hast. Die Zeile ergibt nil, verstehe ich nicht, denn alle var sind ausgefüllt (COMMAND "_rotate" en "" pkt "") Für das Drehen ist der erster Punkt var pkt, also der Insertpunkt vom Block und den zweiten Punkt möchte ich manuell eingeben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Aug. 2011 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
(command "_rotate" (setq en (car(entsel))) "" (cdr(assoc 10 (entget en))) (getpoint))) dein Winkel - Zielpunkt fehlt
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 10:59 <-- editieren / zitieren --> Unities abgeben:
Der Block wird zwar gedreht, nur nicht dorthin wo der Cursor beim anklicken steht. Deshalb war mein Versuch es über Ausrichten des BKS am Block. Das kann ich irgendwie nicht umsetzen. Jetzt werden sich vielleicht welche fragen, wozu das ganze, wenn man doch durch anklicken des insertpunktes + Taste r (rotieren) einen Block beliebig drehen kann. Mein Gedanke war halt das zu automatisieren. Das wenn ich einen Block anklicke (er automattisch am Insertpunkt gefangen wird) und mit einem zweitem Klickpunkt die gewünschte Drehung erhält. [Diese Nachricht wurde von cadplayer am 02. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 02. Aug. 2011 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
wenn du zwischen verschiedenen koordinatensystemen hin- und hersprings, musst du drauf achten, dass die koordinaten der punkte, die du ausliest / uebergibst, auch in das jeweilige koordinatensystem transferiert werden. gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 12:38 <-- editieren / zitieren --> Unities abgeben:
(DEFUN c:rb ( / obj ele pkt wi ) (if (setq obj (car (ENTSEL "Block wählen: ")) ele (entget obj) pkt (CDR (ASSOC 10 ele)) ) (COMMAND "_ucs" "_object" (CDR (ASSOC -1 ele))) (SETQ wi (+ (CDR(ASSOC 50 ele)) (GETANGLE (TRANS (CDR (ASSOC 10 ele)) 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele) ) ) (entmod ele) ) (COMMAND "_rotate" obj "" pkt "") ich kann diese Zeilen nicht richtig nachvollziehen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 sw: Win7-x64 Office 365 ProPlus C3D (& LT ) ET; DACH; Extensions ------------------- hw: FX3800 i5 CPU 670 8GB RAM
|
erstellt am: 02. Aug. 2011 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Dürfte ich fragen, warum Du nicht den Usprungscode verwendest, den Dir Dorfy sogar noch auf das attsync hin angepaßt hat? Der tut doch genau das von Dir gewünschte: Zitat: Das wenn ich einen Block anklicke (er automattisch am Insertpunkt gefangen wird) und mit einem zweitem Klickpunkt die gewünschte Drehung erhält.
Bei Deinem code jetzt: Du stellst am Ende das ucs nicht zurück, solltest Du noch einbauen. Bei der Zeile: (COMMAND "_rotate" obj "" pkt "") läßt Du mal das letzte "" weg und dann wirst Du auch wieder nach nem Drehwinkel gefragt. Das ist immer noch dieselbe Zeile wie um 02. Aug. 2011 10:06, obwohl Du auch dazu eine Antwort bekommen hast. Einer von uns beiden macht sich das Leben grade unnötig schwer. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 13:03 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Aug. 2011 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
ich versuch es mal (DEFUN c:rb ( / obj ele pkt wi ) (if ;if schleife auf( (setq obj (car (ENTSEL "Block wählen: "));bedingung( ele (entget obj);bedingung pkt (CDR (ASSOC 10 ele));bedingung );bedingung) (progn;fehlt hier sicherlich (COMMAND "_ucs" "_object" (CDR (ASSOC -1 ele)));koordinatensystem verschieben (SETQ wi ;neuen drehwinkel berechnen (+ ;du addierst (CDR(ASSOC 50 ele));die Drehung vom insert (GETANGLE ;mit einem Winkel aus Basispunkt und einer Eingabe (TRANS ;Transformierung vom Basispunkt (CDR (ASSOC 10 ele));Basispunkt 0 1))) ele (subst (cons 50 wi) (assoc 50 ele) ele));entityliste austaucsch vom gc50 ; ) << nee (entmod ele) ;ein attsync ist hier sicher angebracht ))) ;(COMMAND "_rotate" obj "" pkt "") kein Ahnung warum die zeile noch hier ist jepp - man kann sich das Leben schwer machen
oder vllt so Code: (command "_rotate" (setq en (car(entsel))) "" (cdr(assoc 10 (entget en))) "B" (/(* 180(cdr(assoc 50 (entget en))))pi) (getpoint))
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 02. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 02. Aug. 2011 14:13 <-- editieren / zitieren --> Unities abgeben:
Vielen, vielen Dank für die Antwort - ja, es ist schon kompliziert und ich verstehe es mit deiner Hilfe besser. Wobei die Winkelberechnung mit eingeschl. Transformation mir zwar klar ist, aber die Umsetzung nicht einleuchtet, aber das kommt vielleicht mit der Praxis (hatte das jedenfalls noch nicht ausprobiert). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 02. Aug. 2011 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011
|
erstellt am: 02. Aug. 2011 17:38 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo ! Anbei eine Lisp, wenn's wer brauchen kann: Geklickte Blöcke manuell drehen mit 3 Modi: Option O: Es wird nur der Block ohne Attribute gedreht Option S: Der Block wird samt seinen Attributen gedreht (Standard) Option A: Attribute werden zwar mitgedreht, ihre Ausrichtung bleibt aber gleich Bei Attributen werden gesperrte Layer berücksichtigt. Auch mit BricsCAD getestet. MfG Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 03. Aug. 2011 08:12 <-- editieren / zitieren --> Unities abgeben:
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Aug. 2011 13:37 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 05. Aug. 2011 13:45 <-- editieren / zitieren -->
Hi, jetzt machst Du aber Scherze, oder? Oben schreibst Du schon Lisp-Zeilen mit GC 50 (dieses hier: (ASSOC 50 ele) ) und jetzt fragst Du danach? - alfred - PS: >>>schau da mal<<< ==> Oben 'Entities' auswählen und unten dann 'INSERT' ------------------ www.hollaus.at |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Aug. 2011 15:10 <-- editieren / zitieren --> Unities abgeben:
Tschuldigung die Frage sollte eigentlich lauten, kann man den Winkel auch in gon anzeigen lassen? Aber das war gar nicht nötig zu wissen Ich möchte den Block um 100gon rotieren lassen (command "_rotate" (setq en (car(entsel))) "" (cdr(assoc 10 (entget en))) "100") Ich möchte den Block so lange rotieren lassen, bis er die gewünschte Lage hat. Ich weiss nicht wie ich da repeat verwende? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 05. Aug. 2011 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Ex-Mitglied
|
erstellt am: 05. Aug. 2011 15:19 <-- editieren / zitieren -->
Hi, >> [...] den Winkel auch in gon anzeigen Das geht aber schneller als hier die Frage zu schreiben, >>>guckst Du<<< >> Ich möchte den Block so lange rotieren lassen, bis er die gewünschte Lage hat. >> Ich weiss nicht wie ich da repeat verwende?
Beispiele und Erklärungen zu repeat findest Du >>>hier<<< (war auch über Google zu finden ) ...aber welches für Dich(!) jetzt 'die gewünschte Lage' ist, kann ich so auch nicht sagen. - alfred - ------------------ www.hollaus.at |
Arcuso Mitglied Vermessung
Beiträge: 70 Registriert: 25.07.2011
|
erstellt am: 05. Aug. 2011 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo ! Code: ;Block, Text, Symbol bei jedem Klick um 100gon weiterdrehen: (defun C:BloRot90 (/ en on) (while (setq en (car (entsel "\nBlock, Text oder Symbol klicken: "))) (if (wcmatch (cdr (assoc 0 (entget en))) "INSERT,SHAPE,TEXT") (progn (setq on (vlax-ename->vla-object en)) (vlax-put on 'Rotation (- (vlax-get on 'Rotation) (/ pi 2.0))) ) ) ) (princ) ) Nicht getestet. MfG Arcuso Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Aug. 2011 16:39 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 05. Aug. 2011 17:55 <-- editieren / zitieren -->
Hi, >> Nur muss ich dann immer neu dem Block anklicken Und dann mach halt dieses (die Objektselektion): (setq en (car(entsel))) vor dem repeat. - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 05. Aug. 2011 editiert.] |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 07. Aug. 2011 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Servus Dirk! Hoffentlich wird's dem Block nicht übel wenn du ihn so oft drehst:-) Ist dir aber sicherlich schon aufgefallen dass 10x repeat mit 100gon dasselbe ist wie 2x.... Ich interpretiere aus den vorherigen Zeilen dieses Beitrags dass du einen Block an einem anderen Element ausrichten möchtest. Dummerweise ist der Block aber 100,200 oder 300gon zum WKS erzeugt worden und du mußt ihn jetzt solange drehen bis er optisch passt. Das geht aber nur mit einer while-Schleife die du verlassen kannst wenn der Block richtig ausgerichtet ist; repeat ist erst zu Ende wenn der übergebene Index erreicht ist was dir für die richtige Ausrichtung des Blocks gar nichts bringt. Du solltet das ganze so lösen: 1.Was ist meine Ausgangssituation 2.Wo will ich hin 3.Was sind die geeigneten Funktionen in LISP 4.Code erzeugen Bei dir schauts i.E. so aus: 1 - 4 - 2 - 3 - nachbessern Ciao Georg
------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 08. Aug. 2011 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|