Raumkoordinaten 3dsolid ...

Moin ...

Ich bin am Verzweifeln! Ich bekomme es um's Verrecken nicht hin, die beiden Zentrumskoordinaten der Grundflächen eines einfachen Zylinders zu errechnen ...

Centroid und Position - gut & schön ... bringt nur nichts, wenn der Zyl. gedreht im Raum liegt!

Im Prinzip bräuchte ich also "nur" die beiden Griffpunkte als Liste - hört sich einfach an, scheint aber eine Wissenschaft für sich zu sein?!

Wäre grandios, wenn jemand eine Idee hätte - ich habe nun STUNDEN damit verbracht ... evtl. denke ich auch nur zu kompliziert?!

Gruß: Walter - B.

Comments

  • Hallo Walter,

    mit

    (setq daten (entget (car (entsel))))

    bekommst Du eine Menge schwer - oder kaum - zu interpretierender Daten, aber wenn Du weisst, dass es sich um einen Zylinder handelt, dann sieh Dir zum Beispiel mal die  Werte in

    (1 . "ellipse-curve $-1 -1 $-1
    259806.26745548457 101907.48194389956 -154540.41044776121
    -0.26726124191242445 -0.5345224838248489 -0.80178372573727352
    -25077.090176650228 12538.545088325114 0 0.99999999999999978 I I #")

    an. Die 3 Koordinaten nach $-1 sollten die Zentrumskoordinaten sein.

    Beste Grüße aus der Rhön

    Jochen

  • I am assuming that this is a Lisp question...
    If you look at the entity list from a cylinder you will find two 'point' values that are the begin points of the top and bottom face of the cylinder. From these points you can calculate a vector (the coordinates are expressed in the WCS). Combined with the centroid you can then determine the center of the top and bottom face.

    Point values in entity list:
    [code](
      ...
      (1 . "point $-1 -1 $-1 1.9318516525781366 0 -0.51763809020504148 #")
      (1 . "point $-1 -1 $-1 2.9671278329882194 0 3.3460652149512318 #")
      ...
    )[/code]

  • Ich werd bekloppt ... DAS ISSES!!!

    ... herzlichen Dank!

    Glücklich: Walter - B.

    PS: klar, dass ich damit nicht weiter kam ...

    (defun c:DIt (/ ent)
    (setq ent (car (entsel)))
    (vlax-Dump-Object
    (vlax-Ename->Vla-Object ent)
    t
    )
    (textscr)
    (princ)
    )
  • Heinz-Joachim beat me to it plus his solution is better.
  • Jup ... :)

    (entget)  ... hatte in dem Wirrwarr tatsächlich "ellipse" übersehen! Wie dumm ...

    So - und wer mir jetzt noch 'ne schlaue Idee lilefert, wie ich 3D-Koordinaten in "isometrische" 2D-Koord. umrechne ... der kann was erleben!

    Na klar im positiven Sinne ... :)

    Gruß: Walter - B.
  • This perhaps:
    [code](mapcar
      '+
      (polar '(0.0 0.0) (/ pi 6.0) Xcoord)
      (polar '(0.0 0.0) (* (/ pi 6.0) 5.0) Ycoord)
      Zcoord
    )[/code]
  • Or rather:
    [code](mapcar
      '+
      (polar '(0.0 0.0 0.0) (/ pi 6.0) Xcoord)
      (polar '(0.0 0.0 0.0) (* (/ pi 6.0) 5.0) Ycoord)
      (list 0.0 0.0 Zcoord)
    )[/code]
  • Uhh Ohh ... PERFECT!

    OK - what can I do for YOU, Mr. Lisp?! :)
  • Dummerweise haben fast ALLE Entities eines 3DSOLIDS den Wert "1" ... und Wildcards "*" werden von z. B. "member" nicht akzeptiert!

    Wie könnte man nun alle "ellipse-curve"-Entities aus dem Sumpf fischen??! Und warum wird einem das "Lispeln" so schwer gemacht??!

    ((-1 . ) (0 . "3DSOLID") (5 . "A53") (330 . ) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbModelerGeometry") (70 . 1) (1 . "700 0 1 0 ") (1 . "@33 Open Design Alliance ACIS Builder @14 ACIS 24.0.2 NT @24 Fri Oct 31 07:09:58 2014 ") (1 . "1 9.9999999999999995e-007 1e-010 ") (1 . "body $1 -1 $-1 $2 $-1 $-1 #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $-1 $0 $3 $-1 #") (1 . "lump $4 -1 $-1 $-1 $5 $0 #") (1 . "eye_refinement $-1 -1 @5 grid  1 @3 tri 1 @4 surf 0 @3 adj 0 @4 grad 0 @9 postcheck 0 @4 stol -5 @4 ntol 40 @4 dsil 0 @8 flatness 0 @7 pixarea 0 @4 hmax 0 @6 gridar 0 @5 mgrid 512 @5 ugrid 0 @5 vgrid 0 @10 end_fields #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $-1 $2 $3 $-1 #") (1 . "shell $6 -1 $-1 $-1 $-1 $7 $-1 $2 #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $-1 $5 $3 $-1 #") (1 . "face $8 -1 $-1 $9 $10 $5 $-1 $11 forward single #") (1 . "fmesh-eye-attrib $-1 -1 $12 $-1 $7 #") (1 . "face $13 -1 $-1 $14 $15 $5 $-1 $16 forward single #") (1 . "loop $-1 -1 $-1 $17 $18 $7 #") (1 . "cone-surface $-1 -1 $-1 187.0256773866997 46.274388954274663 211.27282323959176 0 0 1 0 26.116553717582072 0 0.99999999999999978 I I 0 1 26.116553717582072 forward I I I I #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $8 $7 $3 $-1 #") (1 . "fmesh-eye-attrib $-1 -1 $19 $-1 $9 #") (1 . "face $20 -1 $-1 $-1 $21 $5 $-1 $22 forward single #") (1 . "loop $-1 -1 $-1 $-1 $23 $9 #") (1 . "plane-surface $-1 -1 $-1 187.0256773866997 46.274388954274663 0 0 0 -1 -1 0 0 forward_v I I I I #") (1 . "loop $-1 -1 $-1 $-1 $24 $7 #") (1 . "coedge $-1 -1 $-1 $18 $18 $23 $25 reversed $10 $-1 #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $13 $9 $3 $-1 #") (1 . "fmesh-eye-attrib $-1 -1 $26 $-1 $14 #") (1 . "loop $-1 -1 $-1 $-1 $27 $14 #") (1 . "plane-surface $-1 -1 $-1 187.0256773866997 46.274388954274663 422.54564647918352 0 0 1 1 0 0 forward_v I I I I #") (1 . "coedge $-1 -1 $-1 $23 $23 $18 $25 forward $15 $-1 #") (1 . "coedge $-1 -1 $-1 $24 $24 $27 $28 reversed $17 $-1 #") (1 . "edge $29 -1 $-1 $30 1.5707963267948966 $30 7.8539816339744828 $23 $31 forward @7 unknown #") (1 . "ref_vt-eye-attrib $-1 -1 $-1 $20 $14 $3 $-1 #") (1 . "coedge $-1 -1 $-1 $27 $27 $24 $28 forward $21 $-1 #") (1 . "edge $32 -1 $-1 $33 -1.5707963267948966 $33 4.7123889803846897 $27 $34 forward @7 unknown #") (1 . "ptlist-eye-attrib $-1 -1 $-1 $-1 $25 #") (1 . "vertex $-1 -1 $-1 $25 $35 #") (1 . "ellipse-curve $-1 -1 $-1 187.0256773866997 46.274388954274663 0 0 0 -1 0 26.116553717582072 0 0.99999999999999978 I I #") (1 . "ptlist-eye-attrib $-1 -1 $-1 $-1 $28 #") (1 . "vertex $-1 -1 $-1 $28 $36 #") (1 . "ellipse-curve $-1 -1 $-1 187.0256773866997 46.274388954274663 422.54564647918352 0 0 1 0 26.116553717582072 0 0.99999999999999978 I I #") (1 . "point $-1 -1 $-1 213.14223110428176 46.274388954274663 0 #") (1 . "point $-1 -1 $-1 213.14223110428176 46.274388954274663 422.54564647918352 #") (1 . "End-of-ACIS-data ") (290 . 0) (2 . "{00000000-0000-0000-0000-000000000000}") (100 . "AcDb3dSolid"))

    Das Problem dürfte an sich keines sein - aber ich steh' mal wieder wie der Ochs vor'm Berg! Kann nicht schlafen ... bin gereizt ... aber das kennt sicher jeder!

    :)

  • My solution to your first problem is not correct actually. The Z coordinate is not handled properly.
    [code](defun Point_3D_To_Isometric (point)
      (mapcar
        '+
        (polar '(0.0 0.0 0.0) (/ pi 6.0) (car point))
        (polar '(0.0 0.0 0.0) (* (/ pi 6.0) 5.0) (cadr point))
        (list 0.0 (caddr point) 0.0) ; Changed.
      )
    )[/code]

    For your second problem you can use the vl-remove-if function:
    [code](setq lst (entget (car (entsel))))
    (vl-remove-if-not
      '(lambda (sub)
        (and
          (= (car sub) 1)
          (= (substr (cdr sub) 1 13) "ellipse-curve")
        )
      )
      lst
    )[/code]

    To split the "ellipse-curve...." text you can then use the vle-string-split function.
  • Mr. Gebbinck ...

    You just made my day!!

    MANY thanks!!!

    Happy: Walter - B.

    PS: Now we should talk about financial things?! ;)
  • Also ... wenn alles im orthogonalen Bereich ist - kein Problem! Aber wehe, es gibt einen Flächen-/Raumsprung ...

    *snief*


  • Hallo Walter,
     
    I would suggest to use another way to get the informations you need.
    Analysing the Autolisp Entity List of ACIS 3D Solids , Regions and Surfaces requires deep knowledge oft he SAT Format,
    in fact the list is the ASCII format of a SAT file.
    You can download my plugin from this forum at
    https://forum.bricsys.com/discussion/17053#24106

    You load the plugin with the command NETLOAD and then you can use the EDGEX command in the
    Autolisp program below to get ALL subentities of 3D Solids, Regions and Surfaces and their data like centers, lengths etc.
    Load the lisp file and run the command  GETSUBENTITIES.
    The subentities (ellipses, splines, circles, arcs etc) are created without exploding the original3D Solids in a NON-destructive mode.
    Then you can get easily the center of an ellipse with (cdr (assoc 10 (entget(car(entsel))))) or the centers of a cylinder  arbitrarily placed in space
    and at the end delete the subentities as wished.

    Best Regards

    Here is the Autolisp code
    [code]

    ; Get the Subentities of ACIS Entities...like 3D Solids, Regions and Surfaces

    (defun C:GetSubEntities ( / current.last.ent ssNewEnt ssNewEntDel new.ent entTyp
                                ssSol3D ssSurf3D ssBody ssRegion ssRest)

     ; mark last entity in the database so that AT THE END
     ; only NEW CREATED entities can be selected   !!
     ; create a new selection set to collect all these new NON ACIS entities...
     (setq current.last.ent (entlast)
           ssNewEnt (ssadd)
           ssNewEntDel (ssadd)
           )

     ; 1.  find ALL ACIS OBJECTS like
     ;     3D SOLIDS, REGIONS and SURFACES and recursively explode them and their NESTED entities
     ;     in a NON-DESTRUCTIVE Way using the command EDGESX from the plugin

     
     ; 2. find ALL 3D SOLIDS and explode them !

     (setq ssSol3D (ssget "X" (list (cons 0 "3DSOLID"))))
     (command "EDGEX" ssSol3D "")


     ; 3  find ALL SURFACES and get their subentities (also those from previously exploded Solids) !

     (setq ssSurf3D (ssget "X" (list
                                       (cons -4  "                                    (cons 0 "SURFACE")
                                       (cons 0 "LOFTEDSURFACE")
                                       (cons 0 "SWEPTSURFACE")
                                       (cons 0 "PLANESURFACE")
                                       (cons 0 "REVOLVEDSURFACE")
                                       (cons -4  "OR>")
                                       )
                                  )
                  )
     
      (command "EDGEX" ssSurf3D "")
     

     ; 4  find ALL BODIES and explode them (also those from previously exploded 3D SOLIDS AND SURFACES) !

     (setq ssBody (ssget "X" (list (cons 0 "BODY"))))
     (command "EDGEX" ssBody "")
     

     ; 5 find ALL REGIONS and explode them...

     (setq ssRegion (ssget "X" (list (cons 0 "REGION"))))
     (command "EDGEX" ssRegion "")


     ;;;;;  NOW COLLECT ALL NEW NON-ACIS ENTITIES ;;;;

     (setq new.ent (entnext current.last.ent))      ; find first NEW  entity

     (while new.ent                                 ; loop through all NEW NON-ACIS entities
      (setq entTyp (cdr (assoc 0 (entget new.ent)))); find the type of the new created entity
      (if (NOT (wcmatch entTyp "*SURFACE*,REGION"))      ; if the type is NON-ACIS ...not surface or region...
       (ssadd new.ent ssNewEnt)                     ; add it to the NEW selection set
       (ssadd new.ent ssNewEntDel)                  ; else add the subentity to a selection set for deletion
       )
      (setq  new.ent (entnext new.ent))             ; get next entity...
      );end while loop

      ;erase all new surfaces and regions subentities
      (command "_ERASE" ssNewEntDel "")

      ; optionally return the selection set of the subentities to frthe process them
      ; ssNewEnt
     )
    [/code]


    imageCylinders.png

    Cylinders.dwganalyze_solids_regions_surfaces.lsp

  • Hallo Konstantin ...
    Vielen Dank für diese Hilfe!

    Ich komme sehr gut zurecht mit "plane-suface" - dank Mr. Gebbinck!

    Aber sehr gerne werde ich mit Ihrer Lösung experimentieren!!

    Mein "neues" Problem stellt nun die Umrechnung von 3D-Koordinaten zu 2D-ISO-Koordinaten dar -
    ich wäre brennend daran interessiert, stimmige ISO-Koord. zu erhalten! Denn mit Mr. Gebbincks
    Lösung bekomme ich nur so lange saubere ISO-K., wenn die Zylinder/Rohre keinem
    Flächen-/Raumsprung folgen ...

    :(

    Gruß: Walter - B.

  • Before posting post #11 the function Point_3D_To_Isometric was tested. I have tested it again and think it is correct. Maybe the problem you experience is caused by the point values you use as input for the function?
    [code](defun Point_3D_To_Isometric (point)
      (mapcar
        '+
        (polar '(0.0 0.0 0.0) (/ pi 6.0) (car point))
        (polar '(0.0 0.0 0.0) (* (/ pi 6.0) 5.0) (cadr point))
        (list 0.0 (caddr point) 0.0) ; Changed.
      )
    )

    ; Let's keep it simple and use the line command.
    (defun DrawLine (pt1 pt2)
      (command "_.line"  "_none" pt1 "_none" pt2 "")
    )

    ; Draws a 1x2x3 isometric box with four 3D diagonals.
    (defun c:DrawBox ( / oldCecolor)
      (setq oldCecolor (getvar 'cecolor))
      ; Ground plane:
      (DrawLine (Point_3D_To_Isometric '(0.0 0.0 0.0)) (Point_3D_To_Isometric '(1.0 0.0 0.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 0.0 0.0)) (Point_3D_To_Isometric '(1.0 2.0 0.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 2.0 0.0)) (Point_3D_To_Isometric '(0.0 2.0 0.0)))
      (DrawLine (Point_3D_To_Isometric '(0.0 2.0 0.0)) (Point_3D_To_Isometric '(0.0 0.0 0.0)))
      ; Top plane:
      (DrawLine (Point_3D_To_Isometric '(0.0 0.0 3.0)) (Point_3D_To_Isometric '(1.0 0.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 0.0 3.0)) (Point_3D_To_Isometric '(1.0 2.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 2.0 3.0)) (Point_3D_To_Isometric '(0.0 2.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(0.0 2.0 3.0)) (Point_3D_To_Isometric '(0.0 0.0 3.0)))
      ; Verticals:
      (DrawLine (Point_3D_To_Isometric '(0.0 0.0 0.0)) (Point_3D_To_Isometric '(0.0 0.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 0.0 0.0)) (Point_3D_To_Isometric '(1.0 0.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 2.0 0.0)) (Point_3D_To_Isometric '(1.0 2.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(0.0 2.0 0.0)) (Point_3D_To_Isometric '(0.0 2.0 3.0)))
      ; Diagonals:
      (setvar 'cecolor "11")
      (DrawLine (Point_3D_To_Isometric '(0.0 0.0 0.0)) (Point_3D_To_Isometric '(1.0 2.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 0.0 0.0)) (Point_3D_To_Isometric '(0.0 2.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(1.0 2.0 0.0)) (Point_3D_To_Isometric '(0.0 0.0 3.0)))
      (DrawLine (Point_3D_To_Isometric '(0.0 2.0 0.0)) (Point_3D_To_Isometric '(1.0 0.0 3.0)))
      (setvar 'cecolor oldCecolor)
      (princ)
    )[/code]
  • Hi Walter,

    i would suggest the following excellent examples for isometric projection transformations.

    1.    developed by Lee Mac at
    ------------------------------------------
    http://www.theswamp.org/index.php?topic=37429.msg424402#msg424402

    You find there all the necessary matrix transformations and maths for a general isometric projection for any 2D or 3D entities in Autolisp.
    You can study them and adapt to your needs.
    LM:ApplyMatrixTransformation, etc
    LM:IsometricProjection,
    I have changed the Test Function 
    c:projectobject 
    so that  (a) a selection set of entities for isometric projection can be selected (instead of a single Entity)
                 (b) a copy of the original entities will be transformed, the original entities remain unchanged

    Here is the changed code of the test function:

    [code]
    (defun c:projectobject ( / e p v )
     (prompt "\n Select Objects to project:\n")
      (if
        (and
          (setq ssp (ssget))
          (setq p (getpoint "\nBase Point: "))
          (progn
            (initget 1 "NE NW SE SW")
            (setq v (getkword "\nSelect View [NE/NW/SE/SW]: "))
          )
        )
       (progn
        (setq idx 0.0)
        (repeat (sslength ssp)

         (LM:IsometricProjection (vla-copy (vlax-ename->vla-object (ssname ssp idx))) (trans p 1 0) v)
         (setq idx (1+ idx))
        )
       )
      )
      (princ)
    )
    [/code]

    --------------------------------------------------------
    2. Another good example for isometric projection of Line, Circle, Arc, Text, LWplines and Spline Entities.

    http://cadtips.cadalyst.com/solids/iso-view-drafting-tool

    I hope this helps

    Gruß
    Konstantin



  • Guten Morgen!

    Ich finde es grandios, hier so nette Hilfe zu bekommen! Ich bin ein großer Fan von Lee Mac ... bin aber schon vor Tagen an seiner Lösung gescheitert! Es sind nach wie vor RAUMkoordinaten, die zwar stimmig sind, aber eben leider nicht auf einer Ebene liegen ...

    Mr. Gebbinck ... bitte schauen Sie sicih das angehängte Bild an - alles ist GUT, bis auf den Raumsprung! Selbst bei Flächensprüngen greift dieses sonst geniale Macro nicht ... bin am Verzweifeln!



    Ich verstehe nur nicht, WARUM dies so ist ...

    :(

    Gruß: Walter - B.

    iso(2).dwg

  • Guten Morgen Walter,

    ich denke, dass man eine isometrische Projektion von 3D Punkten oder Objekten im 3D Raum
    von deren 2D Projektion auf die XY oder welche auch immer Ebene, auseinander halten sollte !
    Eine isometrische Projektion von 3D Punkten oder Objekten resultiert immer in eine 3D isometrische
    Transformation also in 3D objekte!
    Das, was du willst, ist eine zusätzliche Projektion der 3D isometrie auf die 2D XY Ebene.
    In deinem Beispiel hast du 3D Solids (Rohren) dargestellt bzw. erfasst.
    Deren isometrische transformation (isometrie) sind ebenso 3D Objekte !

    Deine Bemerkung ....
    "Es sind nach wie vor RAUMkoordinaten, die zwar stimmig sind, aber eben leider nicht auf einer Ebene liegen ... "
    braucht ZWEI OPERATIONEN um wahr zu werden. ISOMETRISCHE TRANSFORMATION + PROJEKTION auf die XY Ebene.

    Der Lee MAC am Ende seines Autolisp Beitrags macht die Bemerkung...
    (Note: the above result will be 3D, remove Z-Coord to project to the XY-Plane)

    So in deinem Fall und bei 3D Solids, kannst du die Objekte nach Lee Mac isometrisch behandeln
    und dann mit dem Befehl FLATSHOT die isometrische Darstellungen in 2D Blocks und weiter in explodierten Entiies
    umwandeln, um das zu bekommen was du willst...nämlich 2D isometrische Darstellung auf 2D XY Ebene.
    Siehe mein Screenshot.

    Bei anderen 2D und/oder 3D Entities wie Punkte, Linien, Splines etc. (FLATSHOT gilt nur für 3D Solids)
    kannst du entweder die Routine von Lee Mac ändern so dass die 3D Z Koordinate
    von der isometrisch tranformierten "resultat"-Liste auf 0.0 gesetzt wird
    ,
    oder du mußt anderweitig die 3D Isometrie auf die 2D xy Ebene projezieren.

    Im übrigen ich denke, dass das Rohrstück 5-6, korrekt dargestellt ist !

    Gruß
    Konstantin
    imageisometrie2D.png
  • Walter, The output you are getting is correct. Isometric drawings just have some limitations which can make reading them a little hard.

    Your confusion is caused by the fact that point 5 and point 6 have a delta X and delta Y of 1500. In other words in plan they are corners of a square. In isometric drawings diagonals of a square are either horizontal or vertical lines. If the diagonal is a vertical line any delta Z between the begin point and end point of the diagonal will be hard to detect: the line will just be shorter or longer but still appear as a vertical line.
    I think the image clarifies things.

    Unimportant: My last name is 'Klein Gebbinck' and not 'Gebbinck' (although that name also exists).


    imageIso_Plus_3D.png
  • ... Konstantin was a little faster.
    But I don't think Walter wants to combine (real) 3D entities with isometric entities. This topic is all about converting a 3D drawing to an isometric drawing.
  • JETZT habe ich verstanden ...

    ... und bedanke mich auf's herzlichste für diese Führung!

    Es ist anscheinend NICHT machbar und wahrscheinlich auch unsinnig, massstabsgetreue (2D-)Isometrien zu generieren - und mit diesen Hinweisen werde ich nun auch davon absehen, es weiter zu versuchen! Hat Sie und mich nun genug Zeit (& Nerven ...) gekostet!

    Noch einmal vielen Dank für das Hinunterschubsen vom ... HOLZWEG!!

    :)

    Gruß: Walter - B.
  • Hallo Walter,

    diese ganzen Diskusionen um aus 3D Rohrverläufen Isometrien zu erzeugen hat mich tatsächlich dazu animiert, mal über die ganze Sache nachzudenken (ca. 30 Minuten). Danach habe ich mich spontan entschieden, aus 3D Rohrverläufen Isometrien automatisch abzuleiten oder aus Isometrien automatisch 3D Rohrverläufe zu erstellen. Es ist so einfach...

    Gruß
    Peter
  • Hallo Peter!

    Lange nichts gehört voneinander!

    So einfach ist es nicht, es sei denn, Sie haben einen gänzlich anderen Ansatz! - und auf diesen bin ich SEHR gespannt ... :)

    Wir sollten mal wieder telefonieren - es hat sich einiges getan ... wir müssen reden!!

    Gruß: Walter - B.

    PS: kann sein, dass ich etwas übersehen habe und/oder nur zu kompliziert denke ... aber der Hinweis auf MASSSTÄBLICHKEIT sei auch hier noch einmal gegeben!
  • @ Peter:
    I think you are leaving out an essential bit of information. When converting from 3D to isometric you are going to somehow store 3D coordinates (perhaps using Xdata or dictionaries). Only with additional information can the original 3D drawing be restored from an isometric drawing.
This discussion has been closed.