Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Zeichnung vom Modellbereich in den Layoutbereich verschieben

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:  Zeichnung vom Modellbereich in den Layoutbereich verschieben (7411 mal gelesen)
Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 20. Mai. 2009 14:08    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 Lispforum!

Ich bitte um Hilfe bei folgendem Problem:

Ich habe eine DWG-Datei aus einem Fremdsystem (ProEngineer) vorliegen,
in der sich alle Zeichnungsobjekte im Modellbereich befinden. (inkl. Zeichnungsrahmen)

Problemstellung:
Mittels LISP alle Zeichnungsobjekte des Modellbereiches "ausschneiden" und im Layoutbereich
wieder einfügen (im Punkt 0,0).

[b]Mein Lösungsansatz 1:[b]
  (command "_cutclip" "_all" "") ; Alle Objekte ausschneiden
  (command "CTAB" "Layout1") ; Layouttab "Layout1" aktiv schalten
  (command "_pasteclip" "0,0") ; Allles ausgeschnitte in 0,0 einfügen
  (command "zoom" "_e") ; ZOOM Grenzen

Leider funktioniert diese Variante nicht immer, und die Routine bricht manchmal
mit der Fehlermeldung "0,0 Unbekannter Befehl "0,0". Drücken Sie F1-Taste für Hilfe." ab.

[b]Mein Lösungsansatz 2:[b]
  (setq allauswahl (ssget "X"))        ; Auswahlsatz erstellen
  (command "CTAB" "Layout1") ; Layouttab "Layout1" aktiv schalten

Nun muss ich den Auswahlsatz im Layoutbereich einfügen. Mit "entmake" oder "entmakex"
bin ich bisher gescheitert:
  [b](entmake allauswahl)[b]
Mit dem Fehler "Fehler: Fehlerhafte Liste in Objektende: <Selection set: 2> wird die
Routine abgebrochen.
Wie bringe ich den Auswahlsatz "allauswahl" in den Layoutbereich??

Für Hilfe wäre ich euch sehr dankbar!,
Doc40


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: 20. Mai. 2009 14:42    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 Doc40 10 Unities + Antwort hilfreich

Hi,

warum lässt du nicht AutoCAD die Arbeit machen und nutzt CHSPACE?


Gruß
CADchup

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

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 20. Mai. 2009 14:54    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!

Funktioniert denn der Befeh "CHSPACE" im Modellbereich, oder hab ich da was falsch verstanden.
Ich habe im Layoutberich kein Ansichtsfenster!

LG, Doc40

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: 20. Mai. 2009 15: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 Nur für Doc40 10 Unities + Antwort hilfreich

Dann machst du dir eins in der Größe, die du sowieso zum Drucken annimmst, zoomst das Modell auf einen "ordentlichen" Faktor, gehst mit chspace ins Ansichtsfenster und schon hast du das Modell maßstäblich im Layout.


Gruß
CADchup

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

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 20. Mai. 2009 15:07    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

Hi!

Vielen Dank für die raschen Antwort! So werde ich es dann wohl machen müssen. 

Danke, Doc40

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 18:07    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 Doc40 10 Unities + Antwort hilfreich

wenn diese Funktion nicht geht.

Ist das zeichnungsabhängig? Also in der selben zeichnung immer wieder nachvollziehbar?

Wird dabei noch auf das Layout1 umgeschaltet?

Die meldung unbekannter Befehl 0,0 sagt mir, dass einer der vorigen befehle (aus welchem Grund auch immer) einen Befehlsoption mehr benötigt hat, und dewegen das (command "_pasteclip" "0,0") nicht mehr als eine Befehl abgehandelt wird, sondern die Option 0,0 einen neuen Befehl beginnt.

Das (command .....) darf man nicht als abgeschlossenen Befehl sehen, sondern die einzelnen übergebenen Argumente werden einfach in einen Stapel geschoben (auch von mehreren (Command hintereinander), und von Autocad nacheinander abgearbeitet. Benötigt nun eine Befehl jedoch eine Option mehr, so wird der nächste Befehlsbeginn als benötigte Option reingeschoben. Dann stimmt der ganze Ablauf nicht mehr.
Und sowas vermute ich hier jetzt.


[Diese Nachricht wurde von fuchsi am 20. Mai. 2009 editiert.]

[Diese Nachricht wurde von fuchsi am 20. Mai. 2009 editiert.]

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 20. Mai. 2009 21: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

Hallo fuchsi!

Ich konnte folgendes Verhalten feststellen:
Nach dem Öffnen der zu bearbeitenden Zeichnung rufe ich mir die Lisproutine mittels Tastatureingabe auf. Die Routine läuft durch,
wobei zum Schluss auf dan LayoutTab umgeschaltet, jedoch nichts eingefügt wird. Das bedeutet, dass werder im Modell- noch im Layout-Bereich Zeichnungsobjekte zu sehen sind. (sind wohl in der Windows Zwischenablage)
Ich schließe nun die Zeichnung (ohne zu speichern) und öffne sie wieder.
Beim erneuten Aufrufen der Routine läuft die Routine durch und das Ergebnis ist in Ordnung.

Ich habe den Verdacht, dass der Befehl "_cutclip" "_all" zu lange braucht um alle Zeichnugsobjekte zu erfassen, und dadurch im weiteren
Ablauf der Routine noch keine Zwischenablage zur Verfügung steht.

Daher dachte ich an die Variante den Auswahlsatz mit (setq auswahlsatz (ssget "X")) zu erstellen. Dies sollte schneller sein, da hier ja mit der Geometriedatenbank von AutoCAD gearbeitet wird. Allerdings weiß ich nicht wie man im Layout-Tab diesen Auswahlsatz wieder einfügt.

Was meinst du?

LG, Bernhard

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 20. Mai. 2009 22:57    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 Doc40 10 Unities + Antwort hilfreich

hi,
mal ein Schnellschuss für ein Objekt

(defun c:C2PS( / doc space ent vobj copyobj )
  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
space (vla-get-paperSpace doc)
ent (entsel "Select object: ")
vobj (vlax-ename->vla-object (car ent))
copyobj (car (vlax-invoke doc 'copyobjects (list vobj) space)))
  (princ)
)
... 

mfg heiko

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 22. Mai. 2009 15: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

Hallo Heiko!
Vielen Dank für deinen "Schnellschuss". Funktioniert einwandfrei!    Wie von dir bereits erwähnt funktioniert die Routine leider nur für ein Objekt. Schön wäre, wenn ohne Benutzereingabe alle Objekte gewählt, und diese verschoben anstatt kopiert würden. (Modellbereich soll leer sein) Ein leerer Modellbereich ist wichtig, um eine Unterscheidung zwischen importierten Zeichnungen (ProEngineer) und generischen AutoCAD-Zeichnungen treffen zu können. Leider ist mein v-Functions-Wissen noch nicht ausreichend um deine Routine auf meine Bedürfnisse anpassen zu können.

Mit der Bitte um weitere Hilfe wünsche ich ein schönes Wochenende,
Bernhard

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 22. Mai. 2009 18:34    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 Doc40 10 Unities + Antwort hilfreich

Hi,
na dann Schnellschuss die Zweite

(defun c:C2PS (/ doc space elem vobj n asatz)
  (setq doc  (vla-get-ActiveDocument (vlax-get-acad-object))
space (vla-get-paperSpace doc)
asatz (ssget)
n    0
  )
  (repeat (sslength asatz)
    (setq elem (ssname asatz n)
  n    (1+ n)
  vobj (vlax-ename->vla-object elem)
    )
    (vlax-invoke doc 'copyobjects (list vobj) space)
    (vlax-invoke-method vobj 'DELETE)
  )
  (princ)
)

den Rest darfst du dann aber selber machen 

mfg heiko

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 25. Mai. 2009 07:37    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 Heiko!
Vielen Dank für den zweiten "Schnellschuss". Das kommt dem Ideal sehr nahe.
Den Rest werde ich selbst stricken. 
LG, Bernhard

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 25. Mai. 2009 08:10    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


c2ps.txt

 
Hallo nochmal!
Im Anhang die Routine, wie sie nun zum Einsatz kommt.   (getestet leider nur unter AutoCAD 2010)

LG, Bernhard

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

Doc40
Mitglied
Konstrukteur


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

Beiträge: 11
Registriert: 03.12.2008

Win XP Pro
x86 PC, Q6600, 2GB RAM, NVIDIA Quadro FX 3700,
AutoCAD 2010

erstellt am: 25. Mai. 2009 08:12    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


c2ps.txt

 
Hallo nochmal!
Im Anhang die Routine, wie sie nun zum Einsatz kommt.   (getestet leider nur unter AutoCAD 2010)

LG, Bernhard

P.S. Das gab für Heiko 10 U´s

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Mai. 2009 08:49    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 Doc40 10 Unities + Antwort hilfreich

nunja .... ich zitier mal

RetVal = object.CopyObjects(Objects[, Owner][, IDPairs])

Object : Database, Document
        The object or objects this method applies to.

Objects:  Variant (array of objects); input-only
The array of primary objects to be copied. All the objects must have the same owner, and the owner must belong to the database or document that is calling this method.

ich staune , dass das mit Übergabe einer Lisp-Liste auch geht, konform ist das nicht!

nochwas :
wenn (setq asatz (ssget "X")) nix findet , crasht (sslength asatz) ...
außerdem wäre (setq asatz (ssget "_X" '((410 . "Model"))))
wohl besser

------------------
  - 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

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