• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Öffnen Sie aus Excel über VBA ein bestimmtes dwg

  • Ersteller Ersteller blintz
  • Erstellt am Erstellt am

blintz

Guest
Hallo alle
Es gibt mehrere Codes im Netzwerk für beide Programme.
nach dieser Prämisse... die Frage
Ich habe ein Programm in Excel, das perfekt Dialoge mit Autocad
d.h. in wenigen Worten werden die Daten (Blöcke und Text) in die Zeichnung übertragen.
wie ich vba sagen kann, dass ich einen bestimmten Dwg öffnen muss, mit offenem Autocad, ansonsten msgbox
 
Come posso dire a vba che mi deve aprire uno specifico dwg schrieb:
Tut mir leid.
Ich wollte deutlicher sein und angeben, dass excel (vba) eine bestimmte Datei öffnen muss
Ich nutze diesen Code derzeit:
Code:
Sub-Einsatzblöcke()

---------------------------------------------------------------------------------------
'Inserts Blöcke in Autocad mit Daten - Insertionspunkt, Blockname/Vollweg, Skalenfaktoren, Drehwinkel - von Excel.
"Anmerkung, dass der Blockname oder der Blockpfad bereits vorhanden sein muss, sonst wird nichts eingefügt.
"Der Code verwendet eine Spätbindung, so dass kein Verweis auf externe Autocad-Bibliothek (Typ) erforderlich ist.
"Es versteht sich, dass Autocad auf Ihrem Computer installiert werden muss, bevor dieser Code ausgeführt wird.

'geschrieben von: christos samaras
Datum: 21/04/2014
E-Mail: [email protected]
Website: http://www.myengineeringworld.net
---------------------------------------------------------------------------------------

"Erklärung der notwendigen Variablen.
dim acadapp als Objekt
dim acaddoc als Objekt
dim acadblock als Objekt
dim lastrow as long
dim i solange
dim Einführpunkt(0 bis 2) als Doppel
dim blockname als string
dim blockscale als Scalefactor
Dimm-Drehwinkel als Doppel

Aktivieren Sie das Koordinatenblatt und finden Sie die letzte Zeile.
mit Blättern("Beiträge")
.aktivieren
lastrow = .cells(.rows.count, "i").end(xlup). Zeile
Ende mit

"Überprüfe, ob Koordinaten für mindestens einen Kreis vorhanden sind.
wenn Letzterer < 5
msgbox "es gibt keine Koordinaten für den Insertionspunkt!", vbkritischer "Insertion Point Error"
Ausgang Sub
Ende

' überprüfen, ob autocad Anwendung geöffnet ist. wenn nicht geöffnet wird, erstellen Sie eine neue Instanz und machen sie sichtbar.
auf Fehlerwiederaufnahme
acadapp = getobject(, "autocad.application")
wenn acadapp nichts ist
acadapp = createobject("autocad.application")
acadapp.visible = true
Ende

'Check (wieder) wenn es ein Autocad-Objekt gibt.
wenn acadapp nichts ist
msgbox "sorry, es war unmöglich, Autocad zu starten!", vbkritische, "autocad Error"
Ausgang Sub
Ende
auf fehler goto 0

"Wenn es keine aktive Zeichnung gibt, schaffen Sie eine neue.
auf Fehlerwiederaufnahme
acaddoc = acadapp.activedocument
wenn acaddoc nichts ist
acaddoc = acadapp.documents.add
Ende
auf fehler goto 0

"Überprüfe, ob der aktive Raum Papierraum ist und ändere ihn in den Modellraum.
wenn acaddoc.activespace = 0 dann '0 = acpaperspace in frühe Bindung
acaddoc.activespace = 1 '1 = acmodelspace in frühe Bindung
Ende

auf Fehlerwiederaufnahme
'Loop durch alle Zeilen und fügen Sie die entsprechenden Blöcke in autocad.
mit Blättern("Beiträge")
für i = 5 zu Lasten
Setzen Sie den Blocknamen.
Blockname = .range("l" & i). Wert
"Wenn der Blockname nicht leer ist, fügen Sie den Block ein.
wenn Blockname <> vbnullstring dann
Setzen Sie den Einführpunkt.
Einführungspunkt(0) = .range("i" & i) Wert
Einführungspunkt(1) = .range("j" & i). Wert
Einführungspunkt(2) = .range("k" & i). Wert
'initialisieren Sie die optionalen Parameter.
blockscale.x = 1
blockscale.y = 1
Blockscale.z = 1
Drehwinkel = 0
' die optionalen Parameter festlegen (wenn Werte in den entsprechenden Bereichen vorhanden sind).
wenn .range("m" & i).value <> vbnullstring dann blockscale.x = .range("m" & i). Wert
wenn .range("n" & i).value <> vbnullstring dann blockscale.y = .range("n" & i). Wert
wenn .range("o" & i).value <> vbnullstring dann blockscale.z = .range("o" & i). Wert
wenn .range("p" & i).value <> vbnullstring dann rotationangle = .range("p" & i).value
"den Block mit den Blattdaten (Einschubpunkt, Blockname, Skalenfaktoren und Drehwinkel) angeben.
Die 0,0174532925 soll Grad in Radien umwandeln.
acadblock = acaddoc.modelspace.insertblock(Insertionpoint, Blockname, _
blockscale.x, blockscale.y, blockscale.z, rotationangle * 0.0174532925)
Ende
Ich bin der
Ende mit
Extrakt aus Kakao
' call updateattr
"Zoom in die Zeichnungsfläche.
acadapp.zoomextents

"Entlease die Objekte.
acadblock = nichts
acaddoc = nichts
acadapp = nichts

'informieren Sie den Benutzer über den Prozess.
msgbox "die Blöcke wurden erfolgreich in Autocad eingesetzt!", vbinformation, "vollendet"

Endteil
Hoffnung in einem vs helfen hallo
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben