*.dxf - 3DSOLID?



  • Der Link zeigt auf die Version R12 - in der gab es aber anscheinend noch kein 3DSOLID - Mein Link zeigt auf die Doko der R14

    mir würde es auch reichen wenn jemand eine gute Library kennt, die ich nutzen könnte. Bin gerade am Testen der dxflib

    Ein Konverter, den ich als Kommandozeilentool aus meinen Programm heraus aufrufen kann, der mir dann die dxf Datei in z. B. obj umwandelt würde es auch tun



  • habe gerde gemekrt, dass die dxflib kein 3DSOLID untersützt
    http://www.ribbonsoft.com/dxflib_features.html



  • hier sind übrigens alle *.dxf Formate dokumentiert:
    http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=12272454&linkID=10809853

    3DSOLID ist einfach schlichtweg nicht dokumentiert:

    0
    3DSOLID
      5                 // Handle für was?
    1D7                 // anscheinend der wert des Handles
    330                 // Soft-pointer ID/handle to owner dictionary (optional)
    1F                  // anscheinen der Wert des Soft-Pointer
    100                 // Subclass marker (AcDb3dSolid)
    AcDbEntity
      8                 // Layer name
    0
    100                 // Subclass marker (AcDb3dSolid)
    AcDbModelerGeometry
     70                 // Modeler format version number (currently = 1)
         1
      1		    // Proprietary data (multiple lines < 255 characters each)
    mnmoo gi m mi          
      1                 // Proprietary data (multiple lines < 255 characters each)
    ni ^ *+0;:,4 ^ *+0\^ [ nh ^ LR nmqoqnqgmo QK o  
      1             // Proprietary data (multiple lines < 255 characters each)
    n fqfffffffffffffffj:rooh n:rono 
    
    [...] alles Proprietary data
    
    100		// Hier steckt die Geometrische Inforamtion bestimmt auch nicht drin
    AcDb3dSolid
    350
    1DA
      0
    


  • hab jetzt einige OpenSourceProjekte durchgesehen - folgenden können alle nicht mit 3DSOLID umgehen:

    dfxlib: http://www.ribbonsoft.com/dxflib.html
    A DXF Reader Solution and A Simple DXF Viewer: http://www.codeproject.com/KB/cs/dxfreader.aspx
    CadLib: http://www.codeproject.com/KB/library/cadlib.aspx
    Ycad - Java CAD library: http://sourceforge.net/projects/ycad/
    gcnccam: http://sourceforge.net/projects/gcnccam/
    Dime: http://www.coin3d.org/lib/dime



  • Sieht schlecht aus mit der Doku zu 3DSOLID da diese nicht frei ist sondern
    Eigentum der Firma Spatial Technology ist.

    3DSOLID, BODY und REGION
    Wie bereits erwähnt, benutzt AutoCAD Release 13 wie viele andere CAD-Systeme den 3D-Volumenmodellierer ACIS von Spatial Technology. Innerhalb von AutoCAD und den AutoCAD-Zeichnungsdateien werden deshalb ACIS-Objekte der Datentypen 3DSOLID, BODY und REGION gespeichert. Da eine DXF-Datei eine 100%ige Kopie einer AutoCAD-Zeichnungsdatei ist, findet man diese ACIS-Objekte auch in der DXF-Datei wieder.

    Da allerdings ACIS und die ACIS-Datenstruktur Eigentum der Firma Spatial Technology sind, durfte Autodesk die Bedeutung der ACIS-Objekte nicht beschreiben. Autodesk mußte die Daten aus Lizenzgründen sogar verschlüsselt in die DXF-Datei schreiben, zum Ärgernis aller DXF-Leser.

    ACIS verwendet ein eigenes Datenaustasuchformat, mit dem sich allerdings lediglich die ACIS-Modelle austauschen lassen. Dieses Datenformat trägt die Bezeichnung SAT, eine Beschreibung ist über den Web-Server von Spatial Technology erreichbar.

    Die Objekte 3DSOLID, BODY und REGION bestehen jeweils aus einer Gruppe 70 mit dem Wert 1, gefolgt von der verschlüsselten SAT-Datei des ACIS-Objekts. Die SAT-Datei besteht aus Zeilen, jede Zeile wird in Stücke zu maximal 255 Zeichen zerlegt. Wie beim Objekt MTEXT bekommen die Stücke die Gruppennummer 3, nur das letzte Stück jeder Zeile bekommt die Gruppennummer 1. Beim Lesen der DXF-Datei müssen deshalb die Gruppen 3 und die folgende Gruppe 1 zu einer Zeile zusammengesetzt werden.

    Der verwendeten Verschlüsselung ist deutlich anzumerken, daß sie ausschließlich aus dem Grund angewendet wurde, daß irgendeine Verschlüsselung stattfinden muß. Als EDV-Profi sollten Sie nicht länger als fünf Minuten brauchen, um diese Denksportaufgabe zu lösen.

    Quelle: http://www.crlf.de/Dokumente/Dxf-R13/DXF13ENT.HTM



  • Triviale Loesung:
    Man trianguliert die betroffenen Objekte in AutoCad und exportiert erneut.



  • @hellihjb: wie trianguliert man in AutoCAD?
    würdest du das über das 3DSOUT Command machen? gibt es einen anderen Weg?

    BTW: 3DSOUT Funktioniert in AutoCAD 2010 nicht: http://www.cadtutor.net/forum/showthread.php?t=40179



  • Gibt's da jetzt nicht so'n "CONVTOSURFACE" Kommando?



  • lol:

    Mesh conversion set to: Smooth and optimzed.
    Object cannot be converted.

    uff... es ist zum Mäusemelken!
    Ich überlege gerde ob ich da etwas mit AutoLISP machen kann...


  • Mod

    Vertexwahn schrieb:

    kann ich nirgendwo finden wie z. B. /3>1:r,*-9><: {rn rn {rn mj no o o o n n o o 90-(>-;@) V V V V | zu interpretieren ist 😉

    das scheint absicht zu sein, eine art verschluesselung?
    angenommen { bedeutet - und da du buchstaben von i bis r hast soweit ich sehe, kann man die auf 0 bis 9 mappen

    0i
    1j
    2k
    3l
    4m
    5n
    6o
    7p
    8q
    9r
    

    dann koennte mann meinen:

    /3>1:r,*-9><: {rn rn {rn mj no o o o n n o o 90-(>-;@) V V V V |
    ..............-95 95 -95 41 56 6 6 6 5 5 6 6 ...:xmas1:..........;
    

    naja, nur eine vermutung



  • So gehts:

    char decode( char c )
    {
    	if(c==32)
    	{
    		return 32;
    	}
    	else
    		return 159 - c;
    }
    

    Folgeneden Output erhalte ich für einen 3DSOLID:

    21200 86 2 26
    16 A utodesk A utoCA D 17 A SM 12.0.1.820 NT 0
    1 9.9999999999999995e-007 1e-010
    asmheader $-1 -1 @11 212.0.1.820 #
    body $-1 -1 $-1 $2 $-1 $-1 #
    lump $-1 -1 $-1 $-1 $3 $1 #
    shell $-1 -1 $-1 $-1 $-1 $4 $-1 $2 #
    face $-1 -1 $-1 $5 $6 $3 $-1 $7 forward single #
    face $-1 -1 $-1 $8 $9 $3 $-1 $10 reversed single #
    loop $-1 -1 $-1 $-1 $11 $4 #
    plane-surface $-1 -1 $-1 4.2663496153865026 30.711620924292063 -2 0 0 -1 -1 0 0 reverse_v I I I I #
    face $-1 -1 $-1 $12 $13 $3 $-1 $14 reversed single #
    loop $-1 -1 $-1 $-1 $15 $5 #
    plane-surface $-1 -1 $-1 4.2663496153865026 30.711620924292063 0 0 0 -1 -1 0 0 reverse_v I I I I #
    coedge $-1 -1 $-1 $16 $17 $18 $19 reversed $6 $-1 #
    face $-1 -1 $-1 $20 $21 $3 $-1 $22 reversed single #
    loop $-1 -1 $-1 $-1 $23 $8 #
    plane-surface $-1 -1 $-1 4.2663496153865026 127.81583660292993 -1 0 -1 0 0 0 -1 reverse_v I I I I #
    coedge $-1 -1 $-1 $24 $25 $26 $27 reversed $9 $-1 #
    coedge $-1 -1 $-1 $28 $11 $29 $30 reversed $6 $-1 #
    coedge $-1 -1 $-1 $11 $28 $31 $32 reversed $6 $-1 #
    coedge $-1 -1 $-1 $33 $34 $11 $19 forward $35 $-1 #
    edge $-1 -1 $-1 $36 -97.104215678637871 $37 97.104215678637871 $18 $38 forward @7 unknown #
    face $-1 -1 $-1 $39 $40 $3 $-1 $41 reversed single #
    loop $-1 -1 $-1 $-1 $42 $12 #
    plane-surface $-1 -1 $-1 100.10411432542867 30.711620924292063 -1 -1 0 0 0 0 1 reverse_v I I I I #
    coedge $-1 -1 $-1 $29 $43 $44 $45 reversed $13 $-1 #
    coedge $-1 -1 $-1 $46 $15 $47 $48 reversed $9 $-1 #
    coedge $-1 -1 $-1 $15 $46 $43 $49 reversed $9 $-1 #
    coedge $-1 -1 $-1 $34 $33 $15 $27 forward $35 $-1 #
    edge $-1 -1 $-1 $50 -97.104215678637871 $51 97.104215678637871 $26 $52 forward @7 unknown #
    coedge $-1 -1 $-1 $17 $16 $53 $54 reversed $6 $-1 #
    coedge $-1 -1 $-1 $55 $23 $16 $30 forward $13 $-1 #
    edge $-1 -1 $-1 $56 -95.837764710042165 $36 95.837764710042165 $29 $57 forward @7 unknown #
    coedge $-1 -1 $-1 $58 $59 $17 $32 forward $40 $-1 #
    edge $-1 -1 $-1 $37 -95.837764710042165 $60 95.837764710042165 $31 $61 forward @7 unknown #
    coedge $-1 -1 $-1 $26 $18 $59 $62 forward $35 $-1 #
    coedge $-1 -1 $-1 $18 $26 $55 $63 reversed $35 $-1 #
    loop $-1 -1 $-1 $-1 $34 $39 #
    vertex $-1 -1 $-1 $19 0 $64 #
    vertex $-1 -1 $-1 $19 1 $65 #
    straight-curve $-1 -1 $-1 -91.571415094655663 30.711620924292063 -2 0 -1 0 I I #
    face $-1 -1 $-1 $-1 $35 $3 $-1 $66 reversed single #
    loop $-1 -1 $-1 $-1 $59 $20 #
    plane-surface $-1 -1 $-1 4.2663496153865026 -66.392594754345808 -1 0 1 0 0 0 1 reverse_v I I I I #
    coedge $-1 -1 $-1 $53 $67 $58 $68 reversed $21 $-1 #
    coedge $-1 -1 $-1 $23 $55 $25 $49 forward $13 $-1 #
    coedge $-1 -1 $-1 $67 $53 $23 $45 forward $21 $-1 #
    edge $-1 -1 $-1 $56 -1 $69 1 $44 $70 forward @7 unknown #
    coedge $-1 -1 $-1 $25 $24 $67 $71 reversed $9 $-1 #
    coedge $-1 -1 $-1 $59 $58 $24 $48 forward $40 $-1 #
    edge $-1 -1 $-1 $72 -95.837764710042165 $50 95.837764710042165 $47 $73 forward @7 unknown #
    edge $-1 -1 $-1 $51 -95.837764710042165 $69 95.837764710042165 $43 $74 forward @7 unknown #
    vertex $-1 -1 $-1 $27 0 $75 #
    vertex $-1 -1 $-1 $63 1 $76 #
    straight-curve $-1 -1 $-1 -91.571415094655663 30.711620924292063 0 0 1 0 I I #
    coedge $-1 -1 $-1 $44 $42 $28 $54 forward $21 $-1 #
    edge $-1 -1 $-1 $60 -97.104215678637871 $56 97.104215678637871 $53 $77 forward @7 unknown #
    coedge $-1 -1 $-1 $43 $29 $34 $63 forward $13 $-1 #
    vertex $-1 -1 $-1 $54 1 $78 #
    straight-curve $-1 -1 $-1 4.2663496153865026 127.81583660292993 -2 -1 0 0 I I #
    coedge $-1 -1 $-1 $47 $31 $42 $68 forward $40 $-1 #
    coedge $-1 -1 $-1 $31 $47 $33 $62 reversed $40 $-1 #
    vertex $-1 -1 $-1 $32 1 $79 #
    straight-curve $-1 -1 $-1 4.2663496153865026 -66.392594754345808 -2 1 0 0 I I #
    edge $-1 -1 $-1 $37 -1 $50 1 $33 $80 forward @7 unknown #
    edge $-1 -1 $-1 $36 -1 $51 1 $34 $81 forward @7 unknown #
    point $-1 -1 $-1 -91.571415094655663 127.81583660292993 -2 #
    point $-1 -1 $-1 -91.571415094655663 -66.392594754345808 -2 #
    plane-surface $-1 -1 $-1 -91.571415094655663 30.711620924292063 -1 1 0 0 0 0 -1 reverse_v I I I I #
    coedge $-1 -1 $-1 $42 $44 $46 $71 forward $21 $-1 #
    edge $-1 -1 $-1 $60 -1 $72 1 $58 $82 forward @7 unknown #
    vertex $-1 -1 $-1 $71 0 $83 #
    straight-curve $-1 -1 $-1 100.10411432542867 127.81583660292993 -1 0 0 1 I I #
    edge $-1 -1 $-1 $69 -97.104215678637871 $72 97.104215678637871 $67 $84 forward @7 unknown #
    vertex $-1 -1 $-1 $48 0 $85 #
    straight-curve $-1 -1 $-1 4.2663496153865026 -66.392594754345808 0 -1 0 0 I I #
    straight-curve $-1 -1 $-1 4.2663496153865026 127.81583660292993 0 1 0 0 I I #
    point $-1 -1 $-1 -91.571415094655663 -66.392594754345808 0 #
    point $-1 -1 $-1 -91.571415094655663 127.81583660292993 0 #
    straight-curve $-1 -1 $-1 100.10411432542867 30.711620924292063 -2 0 1 0 I I #
    point $-1 -1 $-1 100.10411432542867 127.81583660292993 -2 #
    point $-1 -1 $-1 100.10411432542867 -66.392594754345808 -2 #
    straight-curve $-1 -1 $-1 -91.571415094655663 -66.392594754345808 -1 0 0 1 I I #
    straight-curve $-1 -1 $-1 -91.571415094655663 127.81583660292993 -1 0 0 1 I I #
    straight-curve $-1 -1 $-1 100.10411432542867 -66.392594754345808 -1 0 0 1 I I #
    point $-1 -1 $-1 100.10411432542867 127.81583660292993 0 #
    straight-curve $-1 -1 $-1 100.10411432542867 30.711620924292063 0 0 -1 0 I I #
    point $-1 -1 $-1 100.10411432542867 -66.392594754345808 0 #

    ist ein Quader - mir ist aber noch nicht klar wie ich diesen Quader wieder zusammensetzen soll - welche point Elmemente gehöhren jetzt z. B. zu einem Faces meines ursprünglichens Quders


Anmelden zum Antworten