Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Zeichnung/drawing kopieren/duplizieren

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/drawing kopieren/duplizieren (1380 mal gelesen)
JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 08. Nov. 2013 16:29    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

Gruesse aus den USA! 

Nun zu meiner Frage:
Ich habe in AutoCAD eine Zeichnung erstellt, ein Typenschild bzw. Leistungsschild. Sie besteht nur aus einzelnen Linien, die die Nenndaten voneinander trennen.
Ausserdem habe ich in VBA ein Programm geschrieben, dass mir eine txt-Datei oeffnet, Daten ausliest, damit wiederum eine Excel-Datei oeffnet, diese ausliest und die Daten darin dann in die Zeichnung an die richtige Stelle einfuegt. Aus der txt-Datei habe ich ausserdem die erste Seriennummer der chronologischen Reihe an Seriennummern ausgelesen und lasse sie, nach Eingabe der Anzahl zu druckender Schilder, hochzaehlen.
Soweit sogut!
Mein Problem besteht jetzt darin, die Zeichnung mit den nun darin befindlichen Nenndaten per VBA-Code zu kopieren/duplizieren und so oft auf den gleichen Modelspace einzufuegen, wie es mir die Anzahl vorgibt. Wenn das geschehen ist, muss dann in jedes Duplikat die entsprechende Seriennummer eingetragen werden. Das ganze soll dann naemlich mit einer Lasermaschine auf einzelne Edelstahlschilder gelasert werden.
Ich hoffe, ich konnte es ausfuehrlich und verstaendlich genug erklaeren und ihr versteht was ich meine.    Und ich hoffe ebenso, dass ihr mir da weiterhelfen koennt!  Sollten Fragen auftreten, scheut nicht mich zu loechern! 

MfG und vDiV
JoKurt87

------------------
"Um ein tadelloses Mitglied einer Schafherde sein zu können, muß man vor allem ein Schaf sein."
Albert Einstein

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

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



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

System: F1
und Google

erstellt am: 08. Nov. 2013 18:35    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 JoKurt87 10 Unities + Antwort hilfreich

Mir ist zwar schleierhaft wie die Maschine an die Daten kommen soll für ein Schild ??
Aber angenommen man würde den Vorgang den du dir vorstellst nicht in Frage stellen, so hast du 2 Möglichkeiten.

Jedes Objekt mit geänderten Koordinaten erneut erstellen (mehrfach mit entsprechend angepassten Koordinaten,
oder ziemlich simpel mit dem AutoCadbefehl _copy kopieren.

Dafür brauchst du nur ein sendcommand dem du folgendes mitgiebst:
"_copy" "_all" "chr" "0,0,0" <neue Koordinate> <neue Koordinate...

Beispiele für die richtige Schreibweise etc. gibt es hier zuhauf.
Danach kommt der Teil die richtigen Texte zum anpassen zu finden.

Aber ehrlich gesagt interessiert mich eher ob dein Weg der Richtige ist.

willst du wirklich mehrfach nebeneinander ein lose Anzahl von Objekten in einer Dwg haben ?
Und wie bekommt der Laser an die Daten, SO von alleine ja sicher nicht !?
Also mußt du das ganze drucken ? Fragen über Fragen.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 08. Nov. 2013 18: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

Danke erstmal fuer die Antwort!

Die Lasermaschine ist als Drucker auf dem PC installiert und funktioniert auch so. Man kann also die fertige Zeichnung einfach drucken als waere es ein normaler Drucker mit Papier.
Darauf aufbauend erklaert sich vllt auch weshalb ich mehrere Schilder in einem Layout benoetige. Ich habe dem Layout die Groesse der bedruckbaren Flaeche zugewiesen, in meinem Fall 24" x 12". Angenommen ich muss laut txt-Datei 21 Schilder drucken, dann soll mir das Programm das 1. Schild mit den Nenndaten aus der Excel-Datei fuellen und dann 21 mal auf dem bedruckbaren Bereich platzieren und chronologisch mit den Seriennummern fuellen.
Das Schild ist so gross, dass max. 28 Schilder (4 x 7) auf den bedruckbaren Bereich passen.

Ich hoffe das macht es etwas klarer...

------------------
"Um ein tadelloses Mitglied einer Schafherde sein zu können, muß man vor allem ein Schaf sein."
Albert Einstein

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 08. Nov. 2013 20: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

Ich sollte vllt hinzufuegen, dass ich vor 2 Wochen erst angefangen habe VBA zu programmieren. Davor bin ich nie damit in Beruehrung gekommen. Ich finde, dafuer bin ich schon ziemlich weit mit meinem Programm. 
Dass das mit der Lasermaschine so funktioniert, dafuer kann ich nix, ich muss es auch so hinnehmen.
Es waere also sehr nett, wenn eure Antworten etwas ausfuehrlicher/erklaerender ausfallen koennten. 

------------------
shit's getting real:

(sqrt(-shit))^2

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 08. Nov. 2013 22: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

Ich habe inzwischen eine annehmbare Loesung zu dem Problem gefunden, bin aber weiterhin fuer Vorschlaege offen!
Danke erstmal an alle die sich bisher Gedanken gemacht haben!
Hier der Code:

Code:
Dim dblPnt1(0 To 2) As Double
Dim dblPnt2(0 To 2) As Double
Dim dbltest1(0 To 2) As Double
Dim dbltest2(0 To 2) As Double
Dim objSS As AcadSelectionSet
Dim tSourceEnt As AcadEntity
Dim tCopyEnt As AcadEntity
         
Set objSS = ThisDrawing.SelectionSets.Add("plate")
dblPnt1(0) = 10: dblPnt1(1) = 11.55: dblPnt1(2) = 0
dblPnt2(0) = 15.85: dblPnt2(1) = 10: dblPnt2(2) = 0
objSS.Select acSelectionSetCrossing, dblPnt1, dblPnt2
dbltest1(0) = 10: dbltest1(1) = 10: dbltest1(2) = 0
dbltest2(0) = 15.85: dbltest2(1) = 10: dbltest2(2) = 0
For i = 0 To objSS.Count - 1
    Set tSourceEnt = objSS.Item(i)
    Set tCopyEnt = tSourceEnt.Copy
    Call tCopyEnt.Move(dbltest1, dbltest2)
Next

Wenn ich die kopierte Zeichnung jetzt aber per Hand markiere und loesche und danach das Programm erneut durchlaufen lasse, kommt die Fehlermeldung, dass das SelectionSet schon besteht.
Wie kann ich das loesen? Muss ich es loeschen und wenn ja, wie? 

------------------
shit's getting real:

(sqrt(-shit))^2

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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 11. Nov. 2013 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

Zitat:
Original erstellt von JoKurt87:
Wenn ich die kopierte Zeichnung jetzt aber per Hand markiere und loesche und danach das Programm erneut durchlaufen lasse, kommt die Fehlermeldung, dass das SelectionSet schon besteht.
Wie kann ich das loesen? Muss ich es loeschen und wenn ja, wie?  


Geloest indem ich das Objekt, dem ich das SelectionSet zugewiesen habe, geloescht habe:

Code:
...
Next
objSS.Delete

------------------
shit's getting real:

(sqrt(-shit))^2

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 11. Nov. 2013 19: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 JoKurt87 10 Unities + Antwort hilfreich

Mal eine andere Frage:
Warum erstellst Du Dir nicht einen Block mit den entsprechenden Attributen (Textfelder)?
Diesen Block kannst Du beliebig plazieren und die Attribute mit Deinen Werten (z.B. Seriennummern) füllen.

Schau mal in der Hilfe unter:
- AcadBlock (oBlock = Thisdrawing.blocks.add(,)
- oBlock.AddAttribute( )
- AcadBlockReferenz (oBlockRef=ThisDrawing.ModellSpace.InsertBlock(ipoint,oblock,..)
- oBlockRef.HasAttributes
- oBlockRef.Getattributes

Ist für den Anfang vielleicht etwas viel, aber es gibt hier auch genügend Beispiele

Viel Erfolg

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 11. Nov. 2013 20:06    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 JoKurt87 10 Unities + Antwort hilfreich

... oder du erstellst das Zeug auf verschiedenen Layern und frierst und taust die wie du die brauchst.

Oder du erstellst die Objekte mit entsprechendem Versatz im Modelbereich und änderst den Viewport im Layout-Ansichtsfenster.

Oder du schaltest die Objekte einfach unsichtbar (Eigenschaft Visible)

oder, oder, oder

Grüsse!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

JoKurt87
Mitglied
Student E-Technik


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

Beiträge: 37
Registriert: 08.11.2013

AutoCAD-Anfaenger
Autodesk AutoCAD 2014 mit VBA Modul

erstellt am: 14. Nov. 2013 13:56    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

Danke fuer die Loesungsmoeglichkeiten!  Ich habe das Problem inzwischen geloest, um mich neuen stellen zu koennen. 

------------------
shit's getting real:

(sqrt(-shit))^2

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