Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Abmessungen nach DXF Import falsch

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
  
Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen
Autor Thema:  API: Abmessungen nach DXF Import falsch (1785 mal gelesen)
sbtSDA
Mitglied
Softwareentwickler


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

Beiträge: 30
Registriert: 12.04.2006

Dell PRECISION M70
2,0 GHz; 2 GB RAM
NVIDIA Quadro FX Go 1400
MS Win XP Prof SP2
SolidWorks 2005 SP5.0
SolidWorks 2006 SP5.0
SolidWorks 2007 SP1.0
MS Office Prof 2003
Visual Basic 6
Visual Studio 2005 Express

erstellt am: 29. Nov. 2006 12: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 zusammen,

habe ein kleines Makro geschrieben um DXF-Dateien automatisch
in eine Skizze importieren zu können:

Code:

    Dim oSwApplication As SldWorks.SldWorks
    Dim oSwModelDoc As SldWorks.ModelDoc2
    Dim oSwModelDocExtension As SldWorks.ModelDocExtension
    Dim oSwFeatureManager As SldWorks.FeatureManager
    Dim sFilePath As String
    Dim oSwFeature As SldWorks.Feature
    Dim sTemplate As String

    sTemplate = "C:\Programme\SolidWorks2006\data\templates\Schubert\Teil.prtdot"
    sFilePath = "C:\Dokumente und Einstellungen\sbt.SDA.N\Desktop\Teil14.DXF"

    Set oSwApplication = Application.SldWorks
    Set oSwModelDoc = oSwApplication.NewDocument(sTemplate, 0, 0, 0)

    Set oSwModelDocExtension = oSwModelDoc.Extension
    Set oSwFeatureManager = oSwModelDoc.FeatureManager
   
    oSwModelDocExtension.SelectByID2 "Ebene1", "PLANE", 0, 0, 0, False, 0, Nothing, 0
   
    Set oSwFeature = oSwFeatureManager.InsertDwgOrDxfFile(sFilePath)
    oSwModelDoc.ViewZoomtofit2
    oSwModelDoc.ClearSelection2 (True)


Mein Problem ist, daß nach dem Import eines Kunden DXF alle Abmessungen viel zu Groß sind. Die Abweichung muß irgendwas mit Millimetern zu Inch zu tun haben, weil so ein ähnlicher Faktor dazwischen liegt.
Komisch ist auch, wenn ich die selbe Datei von Hand importieren stimmt alles. Komisch ist auch, wenn ich ein DXF aus SW erzeuge und das dann mit meinem Makro reinlade stimmen die Abmessungen.
Kann mir jemand helfen?

------------------
Mfg Thomas

Brauchen Sie Hilfe, sind Sie in Not? Wir retten Sie mit unserem Code!
----------------------------------------------
SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung

SolidWorks API Programmierung; Schuler Design Automation GmbH
|        kontakt@schuler-da.de   
----------------------------------------------
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
(John Osborne 1929 - 1994)

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 29. Nov. 2006 14: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 Nur für sbtSDA 10 Unities + Antwort hilfreich

Hallo Thomas,

ich vermute, du hast schon selbst die richtige Antwort in deiner Frage gegeben: es hat was mit dem Maßstab in der DXF Datei zu tun. Wenn du es von Hand importierst schaut SolidWorks wahrscheinlich vorher in der Datei nach, welcher Maßstab da eingetragen ist und stellt den dann in der Dropdownliste korrekt ein.

Per API geht das wahrscheinlich (bisher) nicht so einfach; dafür gibt es ab der 2007 den Befehl ImportDxfDwgData::LengthUnit , wenn der leer bleibt ermittelt SolidWorks wohl selbst den Input-Maßstab ( siehe auch das Beispiel Import DXF File to Drawing Example (VB)). Ob und wie das alelrdings für 2006 und früher zu lösen ist ... 

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Member of CAD.de BOINC Team  -   | Seti@Home | CPDN | Einstein@Home

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 29. Nov. 2006 14: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 sbtSDA 10 Unities + Antwort hilfreich

Hi,

in der Hilfe steht etwas von

To import a DXF/DWG file named Draw1.DXF with a sheet size of A3 and default length units in millimeters:
swApp.LoadFile2 "C:\temp\Draw1.DXF", "8 0"

To only specify to use default length units in millimeters in <LengthUnit>, you must also specify -1 for <PaperSize>:

swApp.LoadFile2 "C:\temp\Draw1.DXF", "-1 0"

vielleicht hilft es ja einwenig weiter...

Gruß
Micha

------------------
Stell dir vor, es geht, und keiner kriegts hin.

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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

sbtSDA
Mitglied
Softwareentwickler


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

Beiträge: 30
Registriert: 12.04.2006

Dell PRECISION M70
2,0 GHz; 2 GB RAM
NVIDIA Quadro FX Go 1400
MS Win XP Prof SP2
SolidWorks 2005 SP5.0
SolidWorks 2006 SP5.0
SolidWorks 2007 SP1.0
MS Office Prof 2003
Visual Basic 6
Visual Studio 2005 Express

erstellt am: 29. Nov. 2006 16: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 zusammen,

erst mal vielen Dank für die Hinweise. So wie es aussieht muß ich Stefan recht geben, das ganze funktioniert wohl erst so richtig brauchbar mit der API aus SW2007. Doch das hilft mir leider nicht, bin an SW2006 gebunden. Trotzdem vielen Dank!

Übrignes nur noch zur Information: In einem DXF sind laut Definition alle Koordinaten- und Längenangaben einheitenunabhängig, d.h. man muß die Angaben einfach beim Einlesen entsprechend setzten. Wenn da SW mit dem API Befehl mist baut hat man keine Chance. Denkbar wäre noch eine anschließende Skalierung, doch woran sollte man sich da orientieren, nachdem darüber ja nix im DXF steht.

------------------
Mfg Thomas

Brauchen Sie Hilfe, sind Sie in Not? Wir retten Sie mit unserem Code!
----------------------------------------------
SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung

SolidWorks API Programmierung; Schuler Design Automation GmbH
|         kontakt@schuler-da.de    
----------------------------------------------
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
(John Osborne 1929 - 1994)

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