Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VisualBasic: DXF speichern

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 SOLIDWORKS
  
EMV Wechselrichtersimulation mit CST Studio Suite®
Autor Thema:  VisualBasic: DXF speichern (786 mal gelesen)
P.Reidel
Mitglied



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

Beiträge: 53
Registriert: 17.12.2004

SolidWorks 2007

erstellt am: 04. Feb. 2005 14:01    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


Teil1.zip

 
Hallo,

ich habe ein Problem mit der Programmierung (VisualBasic 6) von SolidWorks 2004: Es soll ein Konturzug in einer SWXSolidWorks-Zeichnung in DXF gespeichert werden.

Das Problem dabei ist, dass der Konturzug in der unteren linken Ecke platziert werden muß (ähnlich wie in der Zeichnung dargestellt).
Im Moment gehe ich über den Umweg, dass die Zeichnung in DXF gespeichert wird (über das Programm), wobei der Konturzug noch nicht platziert ist. Danach muß diese DXF-Datei nochmal in SWXSolidWorks per Hand eingeladen werden, wobei vom Benutzer die X- und Y-Positionen (beim DXF-Import) eingegeben werden müssen, die ihm vom Programm anzeigt werden.

Ich habe es auch schon mit "vView = swView.position" versucht, habe aber nicht rausbekommen, auf welchen Punkt der Zeichenansicht sich dieser Befehl bezieht. Denn wenn ich X=0 und Y=0 angegeben hatte, lag die Zeichenansicht nicht auf dem Zeichenblatt-Nullpunkt, so wie ich es vermutet hatte - wenn ich davon ausgehe, dass der Nullpunkt der Zeichenansicht identisch mit dem Nullpunkt des dargestellten Teiles ist.


Vielleicht hat jemand eine Idee, wie ich da weiterkomme. Vorausgesetzt, irgendjemand kapiert noch, was ich meine.

Danke schon im Voraus

Petra

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

GWS
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2401
Registriert: 23.07.2001

Nach drei Jahren Inventor wieder zurück zu SolidWorks: SWX 23 SP4, PDM Professionell.

erstellt am: 04. Feb. 2005 14: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 Nur für P.Reidel 10 Unities + Antwort hilfreich

Hi Petra,

nur so ne skizzierte Idee von einem nicht Programmierer. In der Acad-Ecke gab es ne Funktion boundingbox oder so ähnlich. Es werden also (2D) die Maximalwerte links unten bzw. rechts oben ausgegeben. Das sollte Dir auf die Sprünge helfen. Der DWG Editor von SWXSolidWorks 5 müsste auch LISP interpretieren können und die Leute im ACAD Forum sollten nen Tipp haben, wie die dazu gehörigen Variablen heissen. Mit diesem Offset kannst Du automatisch alle Elemente dahin schieben wohin Du sie brauchst.

Ich bin mir aber fast sicher, dass das SWXSolidWorks auch ohne LISP Krücke auf die Reihe bekommt.

Grüße Günter

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

BWarneke
Mitglied
Consulting


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

Beiträge: 84
Registriert: 14.07.2004

HP EliteBook 8730w
alle SWX-Versionen

erstellt am: 04. Feb. 2005 16:51    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 P.Reidel 10 Unities + Antwort hilfreich

Hallo Petra,

Der Nullpunkt einer Zeichnung liegt normalerweise in der "Blattecke" links unten. Bei Dir scheint der Nullpunkt verschoben zu sein.
Zeichne mal eine Linie und gebe im Eigenschaftsmanager bei den x/y-Wert für den Anfangspunkt der Linie jeweils 0 ein. Dann weist Du wo bei Dir der Nullpunkt ist. Ich schätze mal, der liegt sonstwo. Nun exportier die Zeichnung nach dwg/dxf und lade sie in ACAD oder so. Da zeichnest Du auch wieder eine linie, die auch bei x/y 0 beginnt(Linie klicken und 0,0 eingeben). Messe nun die x/y Differenz zwischen der SW-Linie und der ACAD-Linie.
Um diesen Wert musst Du Deine SW-Zeichnungsvorlage ändern: Vorlage öffnen und mit den RMB auf den Zeichnungsnamen im FM ganz oben, Option "Verschieben". Da kannst Du dann den Diffrenzwert eingeben und alles sollte dann wieder passen.

Gruß, Bernd

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

BWarneke
Mitglied
Consulting


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

Beiträge: 84
Registriert: 14.07.2004

HP EliteBook 8730w
alle SWX-Versionen

erstellt am: 04. Feb. 2005 16: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 Nur für P.Reidel 10 Unities + Antwort hilfreich

...Wird Zeit das Wochenende wird....

Habe jetzt erst gesehen, das Du was angehangen hast. Da passt ja alles in der Zeichnung, was den Nullpunkt betrifft.

Trotzdem: Gut das wir darüber gesprochen haben...

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

P.Reidel
Mitglied



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

Beiträge: 53
Registriert: 17.12.2004

SolidWorks 2007

erstellt am: 07. Feb. 2005 09:20    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 GWS,

das mit der boundingbox muss ich mir mal anschauen. Sowas ähnliches muss der Benutzer meines Programms ja auch machen - währe aber echt besser, wenn das Programm das selbst könnte.


Hallo BWarneke,

mein Problem ist nicht der Nullpunkt der Zeichnung an sich (der liegt unten links), sondern der einzelnen Zeichenansichten.
Es gibt da prinzipiell zwei Wege:
1. die Zeichenansicht wird schon im SWXSolidWorks richtig positioniert und als DXF abgespeichert und
2. die SWXSolidWorks-Zeichnung wird als DXF gespeichert, das DXF wird in SWXSolidWorks geöffnet und dabei kann die Positionierung geändert werden.

Den 2. Weg gehe ich gerade. Mit der Einschränkung, dass das Programm nicht alles automatisch machen kann: die Positionierungs-Werte für das Einlesen der DXF-Datei müssen von Hand eingegeben werden. Das heisst, der Benutzer wird vom Programm aufgevordert die DXF-Datei in SWXSolidWorks einzuladen und in die Felder "Positionieren" die angezeigten Werte zu übertragen. Da das doch etwas Aufwand bedeutet und das Programm schon die Positionierung berechnen muss, warum kann es nicht auch die Positionierung an sich vornehmen?
Besser wäre demnach der 1. Weg. Es gibt auch einen VB-Befehl (part.position), mit dem eine Zeichenansicht auf einem Zeichenblatt verschoben werden kann. Mein Problem dabei liegt darin, dass ich nicht weis, wo der Bezugspunkt der Zeichenansicht ist. Sage ich, die Zeichenansicht soll auf Punkt 0/0 verschoben werden, so wird die Zeichenansicht irgendwo unten links liegen. Ich kann vorher nur nicht sagen, wo das genau sein wird, da ich den Nullpunkt der Zeichenansicht nicht kenne.

Ich hoffe nun, dass mein Problem etwas deutlicher geworden ist.
Vielleicht hatte schon mal jemand ein ähnliches Problem und kann mir helfen.

Petra

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

d_b
Mitglied
vorhanden


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

Beiträge: 88
Registriert: 15.03.2001

42

erstellt am: 07. Feb. 2005 09:43    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 P.Reidel 10 Unities + Antwort hilfreich

Hallo Petra,

folgender Code verschiebt die linke, untere Ecke der ersten Zeichenansicht in die linke, untere Ecke des Blattes:

--------------------CUT
Option Explicit
Dim swApp As Object
Dim Part As Object

Sub main()
Dim viewx As View
Dim posx As Variant
Dim outx As Variant


Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

Set viewx = Part.GetFirstView
Set viewx = viewx.GetNextView

posx = viewx.position
outx = viewx.GetOutline
posx(0) = posx(0) - outx(0)
posx(1) = posx(1) - outx(1)
viewx.position = posx

End Sub
---------------------------- CUT

gruß,
d_b

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

P.Reidel
Mitglied



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

Beiträge: 53
Registriert: 17.12.2004

SolidWorks 2007

erstellt am: 07. Feb. 2005 10:16    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

OK, Fehler von mir!

Ich muss nicht die Ecke der Zeichenansicht auf den Blatt-Nullpunkt legen, sondern die linke Ecke der Kontur die in der Zeichenansicht dargestellt wird. Oder auch einfacher den Nullpunkt des Teils, welches in der Zeichenansicht dargestellt ist (von da aus kann ich den Abstand zur Kontur berechnen).

Aber trotzdem danke, das habe ich so noch nicht gekannt.

Petra

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

d_b
Mitglied
vorhanden


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

Beiträge: 88
Registriert: 15.03.2001

42

erstellt am: 07. Feb. 2005 15:14    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 P.Reidel 10 Unities + Antwort hilfreich

dann soltte folgendes helfen:

-----------------------CUT
Option Explicit

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Long
Dim mutil As MathUtility
Dim viewmat As MathTransform

Sub main()
Dim viewx As View
Dim mp1 As MathPoint
Dim posx As Variant
Dim outx As Variant
Dim zc(2) As Double

Set swApp = Application.SldWorks
Set mutil = swApp.GetMathUtility
Set Part = swApp.ActiveDoc

Set viewx = Part.GetFirstView
Set viewx = viewx.GetNextView
Set viewmat = viewx.ModelToViewTransform

posx = viewx.position
outx = viewx.GetOutline

'Modellkoordinaten
zc(0) = -58.8 / 1000#  'x
zc(1) = 37.43 / 1000#  'y
zc(2) = 0              'z

Set mp1 = mutil.CreatePoint(zc)
Set mp1 = mp1.MultiplyTransform(viewmat)

posx(0) = posx(0) - mp1.ArrayData(0)
posx(1) = posx(1) - mp1.ArrayData(1)

viewx.position = posx
Part.GraphicsRedraw2

End Sub
---------------------CUT

Gruß,
d_b

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

P.Reidel
Mitglied



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

Beiträge: 53
Registriert: 17.12.2004

SolidWorks 2007

erstellt am: 07. Feb. 2005 15: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

Danke d_b,

hat geklappt!! Endlich!!

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)2024 CAD.de | Impressum | Datenschutz