Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Reactor, Eigenschaften von kopierten Objekten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Reactor, Eigenschaften von kopierten Objekten (967 mal gelesen)
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 20. Mrz. 2007 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
ich bin gerade mal wieder mit Reactoren am ausprobieren, ich habe mir von Holger Brischke ein paar Zeilen aus dem Forum kopiert und die folgendermaßen geändert:
Code:

;;;Reactor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (not *VLR:CHECK_COMMAND*)
  (setq *VLR:CHECK_COMMAND*
(VLR-Command-Reactor
  (vla-get-ActiveDocument
    (vlax-get-acad-object))
  '((:VLR-commandWillStart
      .
      R:CHECK_COMMAND_START)
    (:VLR-commandEnded . R:CHECK_COMMAND_END)
    (:VLR-commandCancelled
      .
      R:CHECK_COMMAND_CANCEL)))))


;;;Start;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun R:CHECK_COMMAND_START  (A B /)
  (if (wcmatch (strcase (car B)) "*COPY")
    (setq JB:R:LAST_OBJ (entlast))))


;;;End;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun R:CHECK_COMMAND_END  (A B / AWS N)
  (if (and (wcmatch (strcase (car B)) "*COPY"))
    (progn
      (setq aws (ssadd))
      (while (setq JB:R:LAST_OBJ (entnext))
(if (not (member (cdr (assoc 0 (entget JB:R:LAST_OBJ)))
'("VERTEX" "SEQEND" "ATTRIB")))
  (ssadd JB:R:LAST_OBJ aws)))
      (if (> (sslength aws) 0)
(progn (setq n 0)
      (repeat (sslength aws)
(entmod (cons 8 "NEUER_LAYER")
(assoc 8 (entget (ssname aws n)))
(entget (ssname aws n)))
(setq n (+ n 1))))))))


;;Cancel;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun R:CHECK_COMMAND_CANCEL  (A B / )
  (if (wcmatch (strcase (car B)) "*COPY")
    (alert "Abbrechen Kopieren")))


Erreichen möchte ich, das beim kopieren alle neuen Objekte z.B. auf den Layer "NEUER_LAYER" umgelegt werden.
Das soll in der Funktion R:CHECK_COMMAND_END erledigt werden. Ich habe mir vorher das letzte Objekt global in der Variablen JB:R:LAST_OBJ gespeichert, und wollte dann über ENTNEXT alle neuen Objekte in einen Auswahlsatz packen.
Dann mußte ich aber feststellen, das der Kopieren-Befehl noch nicht ganz abgeschlossen war, denn mit ENTNEXT bekomme ich nur eine BLOCK mit einer durch AutoCAD festgelegten Benennung, der die neuen Objekte enthält. Habe ich eine Möglichkeit, an die neuen Objekte ranzukommen???

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


Sehen Sie sich das Profil von gmk an!   Senden Sie eine Private Message an gmk  Schreiben Sie einen Gästebucheintrag für gmk

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 20. Mrz. 2007 12:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

Servus Jörn!

Du könntest doch copy umbiegen: vor und nach dem kopieren entlast abfragen, einen Auswahlsatz bilden und dann alle Elemente verschieben.

Ciao Georg

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 20. Mrz. 2007 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Georg,
vielleicht ist das wirklich einfacher, wenn ich mit den Reactoren nicht weiterkomme, werde ich es so machen.

Apropos Reactoren, ein Versuch habe ich noch gemacht, bei dem ich aber auch kläglich gescheitert bin:

Code:

;;;Reactor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq *VLR:CHECK_OBJECT*
(VLR-Object-Reactor
  (list(vlax-ename->vla-object(car(entsel))))
  "TEST-Objekt-Reactor"
  '((:vlr-copied . R:JB:neuer_layer)
   
    )))
;;;vlr-copied;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun R:JB:neuer_layer  (A B C / )
  (if (=(type (car C))'ENAME)
  (entmod (subst(cons 8 "NEUER_LAYER")(assoc 8 (entget C))(entget C)))))


Dabei enthält die Variable C beim 2.ten Durchlauf den Entity-Namen des neuen Objektes (glaube ich), dieses Objekt ist aber ungültig, weiß da noch einer weiter???

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

benwisch
Mitglied
Bautechniker, CAD-Konstrukteur


Sehen Sie sich das Profil von benwisch an!   Senden Sie eine Private Message an benwisch  Schreiben Sie einen Gästebucheintrag für benwisch

Beiträge: 375
Registriert: 01.02.2001

erstellt am: 21. Mrz. 2007 11:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

Moin Jörn,
 
Zitat:
Erreichen möchte ich, das beim kopieren alle neuen Objekte z.B. auf den Layer "NEUER_LAYER" umgelegt werden.

[edit] wenn ich dein Anliegen richtig verstanden habe...
Nö, nicht richtig gelesen...  sorry, war gedanklich beim erzeugen und nicht beim kopieren [edit]

[Diese Nachricht wurde von benwisch am 21. Mrz. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 21. Mrz. 2007 12:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Benwisch,
das mit der Eigenschaft "Layer" habe ich nur als Beispiel genommen, weil ich ungeübt im Umgang mit Reactoren bin und daher nur eine einfache Änderung vornehmen wollte.

Letzendlich möchte ich, wenn ein Objekt kopiert wird, und dieses XDaten von einem meiner Programme enthält, das die XDaten entfernt werden Und dafür brauche ich den Objektnamen und muß mit entmod drauf zugreifen können.

Ich werde aber wohl, wie Georg es geschrieben hat, den copy-Befehl neudefinieren.

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 22. Mrz. 2007 11:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

Hi Jörn,

wie du schon geschrieben hast, speicherst du hier das letzte Objekt ab:

Code:

;;;Start;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun R:CHECK_COMMAND_START  (A B /)
  (if (wcmatch (strcase (car B)) "*COPY")
    (setq JB:R:LAST_OBJ (entlast))))
;;;End;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


Aber hier greifst du gar nicht auf dein gespeichertes Objekt zu, bzw. holst dir das nächste:

Code:

(defun R:CHECK_COMMAND_END  (A B / AWS N)
  (if (and (wcmatch (strcase (car B)) "*COPY"))
    (progn
      (setq aws (ssadd))
      (while (setq JB:R:LAST_OBJ (entnext))
(if (not (member (cdr (assoc 0 (entget JB:R:LAST_OBJ)))
'("VERTEX" "SEQEND" "ATTRIB")))
...
...
...

Kleine Änderung deiner while-Zeile und große Wirkung:

Code:

(while (setq JB:R:LAST_OBJ (entnext JB:R:LAST_OBJ))
;;;      (while (setq JB:R:LAST_OBJ (entnext))

So würd's jetzt gehen, wenn jetzt dein (entmod ...) nicht unvollständig wäre. 


Gruß
CADchup

------------------
CADmaro.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 22. Mrz. 2007 12:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hei CADchup,
wie dämlich muss man sein...
danke, die U's sind unterwegs

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Mrz. 2007 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmal,
ich habe noch ein Verständnisproblem:
wenn ich das obige Beispiel nehme, das funktioniert jetzt, wenn ich den Code in der aktuellen Zeichnung lade, dann werden die Layer aller neuen Objekte aus einer Kopie geändert.

Kann man diesen Reactor jetzt in einer Zeichnung speichern?? Wenn ich sonst die Zeichnung wieder öffne muß ich den Reactorcode ja wieder laden.

In der Acaddoc.lsp wollte ich das nicht reinbringen, da der Reactor nur für Zeichungen mit einem bestimmten Thema bestimmt sind.

Bin wie immer dankbar für Tips und Anregungen

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 28. Mrz. 2007 14:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

na wenn man anhand des Inhalt, Dateinamen oder ähnlichem das "Thema" rauslesen kann,
kann man ja ein if verwenden 
Oder du erstellst dir einen Button und lädst so per manuell per Knopfdruck das Teil..

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 28. Mrz. 2007 14:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für joern bosse 10 Unities + Antwort hilfreich

Hi,

In der Entwicklerhilfe stehen ein paar Sachen über persistente Reaktoren. Vielleicht ist das was für dich. Hier geht's los:
"Attaching Reactors to AutoCAD Drawings"


Gruß
CADchup

------------------
CADmaro.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Mrz. 2007 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
@CADchup: Da werde ich mal stöbern, das hört sich interessant an.
@CADffm: wenn beim stöbern nicht klappt werde ich wohl ein "if" oder so nehmen.

------------------
viele Grüße

Jörn

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz