| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: regen läuft zu langsam (1098 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 17. Jan. 2013 16:23 <-- editieren / zitieren --> Unities abgeben:
Code:
(defun c:mot2 () (setq ent (car (nentsel "\nwähle dim text "))) (setq NP (getpoint "\nneue position ")) (entmod (subst (cons 10 NP) (assoc 10 (entget ent)) (entget ent) ) ) (command "_regen" "all" "") (princ) )(defun c:mot () (setq obj (vlax-ename->vla-object (car (nentsel "\nwähle dim text ")))) (setq pt (vlax-3d-point (getpoint "\nneue position "))) (vla-put-insertionpoint obj pt) (command "_regen" "all" "") (princ) ) (defun c:mot3 (/ *error* gr ent) (defun *error* (msg) (princ (strcat "\nError: " msg)) (princ) ) (setq ent (car (nentsel "\nwähle dim text "))) (while (setq gr (grread T 12 0)) (entmod (subst (cons 10 (cadr gr)) (assoc 10 (entget ent)) (entget ent) ) ) (command "_regen" "") ) (princ) )
hi all! ich habe hier ein paar funktionen zusammen geschrieben, die mir einen text von DIMENSION-objekt verschieben soll. Optimal wäre, wenn ich den text während der verschiebung sehen könnte, dass soll mein 3. beispiel ermöglichen, aber läuft ebend sehr träge. hat jemand einen tip auf lager sorry bin auf einhändiges schreiben wegen gebrochener schulter gezwungen, deshalb alles klein geschrieben.
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 381 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 17. Jan. 2013 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Jan. 2013 17:33 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Beim brutalen verschieben des Mtextes eines Bemaßungsblockes helfe ich zwar nicht, dennoch möchte ich auf die Funktion AIDIMTEXTMOVE mit Option 0 , 1 und 2 hinweisen. Deine Kotzeilen wären optisch vergleichbar mit der Option 2 von AIDIMTEXTMOVE , also ohne die Bemaßungslinie zu verschieben(0) und der MText hat keine Führung(1). Mit dem Unterschied eben das AIDIMTEXTMOVE dem Bemaßungsobjekt Bescheid gibt was Sache ist und zudem ist es fix&fertig in der Standardinstallation enthalten, gar im Kontextmenü für Bemaßungen intergriert. Hilft nicht beim Programmieren, aber den einen oder anderen Mitleser hilft es vielleicht. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 17. Jan. 2013 20:04 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: hi all!ich habe hier ein paar funktionen zusammen geschrieben, die mir einen text von DIMENSION-objekt verschieben soll. Optimal wäre, wenn ich den text während der verschiebung sehen könnte, dass soll mein 3. beispiel ermöglichen, aber läuft ebend sehr träge. hat jemand einen tip auf lager sorry bin auf einhändiges schreiben wegen gebrochener schulter gezwungen, deshalb alles klein geschrieben.
Da hast in c:mot3 ja das REGEN in der While-Schleife stehen. Kein Wunder, dass Dein Rechner da stehen bleibt ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 222 Registriert: 22.08.2006
|
erstellt am: 18. Jan. 2013 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
hallo cadplayer, statt "(command "_regen" "")" verwende (wie schon geschrieben) "entupd". aber: was passiert, wenn der anwender esc drueckt? dein originalobjekt ist verschoben auf die letzte mouse position - das waere aber falsch. du musst mit einer kopie deines objekts arbeiten und erst am ende das originalobjekt verschieben, die kopie wieder loeschen und (redraw). 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: 1832 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 18. Jan. 2013 09:23 <-- editieren / zitieren --> Unities abgeben:
hi danke erstmal fuer eure guten kommentare cadffm Zitat: möchte ich auf die Funktion AIDIMTEXTMOVE mit Option 0 , 1 und 2 hinweisen
ist optimal mit wenig aufwand umsetzbar. meldin
Zitat: Vielleicht hift dir da schon entupd
entupd in der while schleife arbeite nicht gleich "regen" oder? archtools
Zitat: Da hast in c:mot3 ja das REGEN in der While-Schleife stehen. Kein Wunder, dass Dein Rechner da stehen bleibt ...
mein rechner bleibt nicht stehen er läuft nur träge, weil er immer erst regenerieren muss, bevor die textposition angezeigt wird. neurosis
Zitat: was passiert, wenn der anwender esc drueckt? dein originalobjekt ist verschoben auf die letzte mouse position - das waere aber falsch.
habe ich noch nicht beruecksichtigt Zitat: du musst mit einer kopie deines objekts arbeiten und erst am ende das originalobjekt verschieben, die kopie wieder loeschen und (redraw).
Ich komme an der stelle nicht weiter, wie ich den masstext absetzen kann Code:
(defun c:mot3 (/ *error* gr ent ) (defun *error* (msg) (entdel tx) (princ (strcat "\nError: " msg)) (princ) ) (setq ent (car (nentsel "\nwähle dim text "))) (setq tx (entmakex (list (cons 0 "MTEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbMText") (assoc 1 (entget ent)) (assoc 10 (entget ent)) (assoc 40 (entget ent)) (assoc 50 (entget ent)) (assoc 71 (entget ent)) (assoc 72 (entget ent))) ) ) (if (princ "\nneue position wählen ") (while (setq gr (grread T 12 0)) (entmod (subst (cons 10 (cadr gr)) (assoc 10 (entget tx)) (entget tx) ) ) ) (entmod (subst (cons 10 (cadr gr)) (assoc 10 (entget ent)) (entget ent) ) ) ) ;;; (entdel tx) (princ) )
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jan. 2013 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
entupd ist nicht gleich Regen , ja Entupd ist eine AutoLisp-Funktion welche du in der hilfe nachlesen und selbst testen kannst. Wegen deinem Code-Problem: Schau dir GRREAD noch mal genauer an, ist ja ausführlich dokumentiert. (oder du schaust mal dort wo du den Codebrocken kopiert hast, da stand es nämlich sicher auch etwas anders da) BTW: Den MText kannst du doch komplett kopieren und mußt ihn nicht mühsam zusammenstückeln ?! Schau mal: (entmakeX(car(nentsel))) Und dann hilft später ggf. auch noch etwas über nentselP zu wissen. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) [Diese Nachricht wurde von cadffm am 18. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 222 Registriert: 22.08.2006
|
erstellt am: 18. Jan. 2013 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
fuer den anfang: - du schaffst dir eine neue funktion mit übergabeparametern (originalobjekt startpunkt) und rueckgabewert zielpunkt. - in dieser legst du eine kopie deines objekts an und laesst es am mousezeiger anzeigen (stichwort grread). - nach angabe zielpunkt loeschen der kopie - rueckgabe zielpunkt in deiner eigentlichen funktion verschiebst du dann dein originalobjekt. spaetere verfeinerungen waeren: - fehlerabfangroutine - uebergabe eines auswahlsatzes - hervorheben ausgewaehlter objekte - gummibandlinie - cursordarstellung usw. gruss marco
------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jan. 2013 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
"in deiner eigentlichen funktion verschiebst du dann dein originalobjekt."An der Stelle noch einmal der Hinweis das man da ganz schönen Unsinn baut wenn man einfach die Position des MTextes über die Zuweisung neuer Einfügekoordinaten ändert. @CADplayer - hast du deinen verschobenenen Bemaßungstext schon mal angeklickt ? ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1832 Registriert: 28.04.2009
|
erstellt am: 18. Jan. 2013 12:44 <-- editieren / zitieren --> Unities abgeben:
neurosis
Zitat: - du schaffst dir eine neue funktion mit übergabeparametern (originalobjekt startpunkt) und rueckgabewert zielpunkt. - in dieser legst du eine kopie deines objekts an und laesst es am mousezeiger anzeigen (stichwort grread). - nach angabe zielpunkt loeschen der kopie - rueckgabe zielpunkt
dem werde ich mal nachgehen und bei gelegenheit darauf zrueck kommen - muss mir die grread funktion noch ein bissel vertiefen cadffm Zitat: noch einmal der Hinweis das man da ganz schönen Unsinn baut
daher finde ich deinen vorschlag fuer meine zwecke hilfreich danke an alle und schönes we von cad(arm)breaker ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |