Standardprozeduren
  • 13 May 2024
  • 27 Minuten zu lesen
  • Dunkel
    Licht
  • pdf

Standardprozeduren

  • Dunkel
    Licht
  • pdf

Artikel-Zusammenfassung

Alle Aufrufe der Standardprozeduren die für Grafikprogrammierung verwendet werden stammen aus der Makrodatei namens "LIB3D.BAS". Diese Makrodatei ist eine von seitens moveIT bereitgestellte Datei, die die notwendigen Methoden zur Grafikprogrammierung bereitgestellt. Im Prinzip sind hier die einzelnen Methoden (Prozeduren) gekapselt und für den Stammdatenentwickler funktioneller aufbereitet (z.B. Extrusion-Befehl). Oft sind die Aufrufe einfach nur durchgeschliffen, sprich der Name der Prozedur in der "LIB3D.BAS" entspricht exakt dem Namen der eigentlichen Prozedur im Kernel (siehe Initialisierung des Grafiksystems Prozedur GascadInit) der instanzierten 3D-OCX-Datei!

Um auf die standardisierte LIB3D zugreifen zu können, muss man im visuellen Parametersystem eine Verknüpfung zu den zentralen Stammdaten von moveIT herstellen. Dies kann man im visuellen Parametersystem unter dem Menüpunkt Versionsverwaltung einstellen:

Durch den Eintrag 9905 werden im Programmcode alle Aufrufe wie
RUN public\lib3D.Prozedurname
in den mitausgelieferten zentralen Stammdaten gefunden.

Alle Standardprozeduren sind in den zentralen Stammdaten in der Makrodatei PUBLIC\LIB3D.BAS zu finden.

Diese Prozeduren dürfen nicht verändert werden, da diese durch ISS-Updates immer überschrieben werden!

Initialisierung des Grafiksystems

Die Initialisierung des Grafiksystems sollte wenn möglich immer so oder ähnlich aussehen:

PROCEDURE InmFmStartmaske

DEFINE VARIABLE lstViewList

lstViewLst = {}

RUN SetViewLst(lstViewLst)

RUN public\lib3D.InitializeGraphicSystemV2("Gascad3D", lstViewLst)

END

PROCEDURE SetViewLst

DEFINE PARAMETER inputoutput plstViewLst

plstViewLst = {}

!Sicht 1 - Innenansicht

! Daher Bemaßungen die auf Layer 1 sind ausblenden

plstViewLst = APPEND(plstViewLst, {"1", "1"})

!Sicht 2 - Innenansicht mit Bemassung

plstViewLst = APPEND(plstViewLst, {"2", ""})

!Sicht 3 - Außenansicht

! Daher Bemaßungen die auf Layer 1 sind ausblenden

plstViewLst = APPEND (plstViewLst, {"3", "1"})

!Sicht 4 - Außenansicht mit Bemassung

plstViewLst = APPEND (plstViewLst, {"4", ""})

END

PROCEDURE GascadInit

IF GSERVER = true THEN

ObjectViewer = GETOBJECT("", "OBJECTVIEWER.ObjectViewerCtrl.1") ! 3D-OCX

Kernel = GETOBJECT("", "G3DKernel.G3DKernel") ! Kernel

RootId = Kernel.GetRootItem

IF RootId <> 0 THEN

Position = Kernel.GetElementHeadPosition(RootId)

WHILE Position <> 0 DO BEGIN

ObjId = Kernel.GetNextElement(RootId, INPUTOUTPUT Position)

Kernel.KILLOBJECT(ObjId)

END

ENDIF

ENDIF

END

Bei der Initialisierung werden zwei Objekte instanziert:

ObjectViewer
Kernel

Auf das ObjectViewer-Objekt wird zugegriffen wenn man z.b. den Blickwinkel währende Konfiguration ändern will oder wenn man steuern möchte welche Möglichkeiten in der Grafikanzeige möglich sind (Koordinatenkreuz, …).

Auf den Kernel greifen im Prinzip alle Prozeduren der LIB3D.BAS zu, wie z.B. bei der Prozedur TranslateTo:

PROCEDURE TranslateTo

DEFINE PARAMETER INPUTOUTPUT pObjId, pX, pY, pZ

IF gserver = TRUE THEN BEGIN

Kernel.TRANSLATETO(pObjId, pX, pY, pZ)

ENDIF

END

METHODEN ZUR OBJEKTERZEUGUNG

BASISOBJEKTE ERZEUGEN UND OBJEKT-GRUPPEN

CreateProduct

Durch diesen Aufruf werden Elemente dem 3D-OCX namentlich bekanntgemacht. Dieser Aufruf ist dann notwendig, wenn Objekte durch EnGroup-Anweisungen zu einer einzigen ID zusammengefasst werden sollen. Mit der DeGroup-Anweisung können Objekte wiederum aus der Gruppe entfernt werden!

Aufruf

RUN public\lib3D.CREATEPRODUCT(nID, "Produktname")

Parameter

nID NUM Rückgabewert-ID des erzeugten Objektes

sObjektname STRING Name des Objektes, mit GetElementName(nID) kann diese wieder ermittelt werden!


EnGroup

Fügt ein Objekt einem Vaterobjekt (entstanden durch CreateProduct()) als Kind zu.

Aufruf

RUN public\lib3D.ENGROUP(nFatherID, nChildID)

Parameter

nFatherID NUM ID des Vaterobjektes

nChildID NUM ID des Objektes welches zu Vaterobjekt hinzugefügt wird


DeGroup

Entfernt ein Objekt von der zugehörigen Objektgruppe.

Aufruf

RUN public\lib3D.DeGroup(nID)

Parameter

nID NUM ID des Objektes, dieses Objekt ist zuvor mit EngGroup einem Gruppenobjekt zugeordnet worden!


LoadObject

Lädt ein Objekt aus einem A3D-File in den ObjectViewer.

Aufruf

RUN public\lib3D.LOADOBJECT(nId, PATH+"OBJ\HT1.A3D", "HT", 1)

Parameter

nID NUM Liefert den ID-Wert des geladenen Objektes

sFileName STRING Name der vollständigen Datei inkl. Pfad

sObjektname STRING Name des Objektes in der A3D-Datei

nLayer NUM Optional, weist dem geladenen Objekt diesen Layer zu.


SaveObject

Mit dieser Prozedur kann ein Objekt als A3D-File abgespeichert werden.

Aufruf

RUN public\lib3D.SaveObject(nId, PATH+"OBJ\HT2.A3D", "HT")

Parameter

nID NUM ID-Wert des Objektes

sFileName STRING Name der vollständigen Datei inkl. Pfad

sObjektname STRING Name des Objektes wie es in der A3D-Datei gespeichert wird


Mirror

Spiegelt ein Objekt um die yz-Ebene (Spiegelebene). Die x-Achse stellt hier den Normalvektor auf die Spiegelebene. Das neue Objekt befindet sich an gleicher Position wie das Ursprungsobjekt.

Aufruf

RUN public\lib3D.Mirror(nId, nIdNew)

Parameter

nID NUM ID-Wert des Objektes

nIDNew NUM Liefert den ID-Wert des gespiegelten Objektes


MirrorEx

Spiegelt ein Objekt um die yz-, xz- oder xy-Ebene (pAxis = 1, 2 oder 3). Das neue Objekt befindet sich an gleicher Position wie das Ursprungsobjekt.

Aufruf

RUN public\lib3D.MirrorEX(nId, nIdNew, 1)

Parameter

nID NUM ID-Wert des Objektes

nIDNew NUM Liefert den ID-Wert des gespiegelten Objektes

nAxis NUM 1 … x-Achse ist Normalvektor auf yz-Ebene (Spiegelebene)

2 … y-Achse ist Normalvektor auf xz-Ebene (Spiegelebene)

3 … z-Achse ist Normalvektor auf xy-Ebene (Spiegelebene)


Copy

Kopiert ein Objekt. Das neue Objekt befindet sich exakt an gleicher Position wie das Ursprungsobjekt.

Aufruf

RUN public\lib3D.Copy(nId, nIdNew)

Parameter

nID NUM ID-Wert des Objektes

nIDNew NUM Liefert den ID-Wert der Kopie des Objektes


AddText

Erzeugt einen 3D Text in der xy-Ebene liegt, d.h. man muss von oben draufschauen, damit der Text gut sichtbar ist. Um einen Text in einer Innenansicht lesen zu können, muss dieser mit RotateBy() um 90° Grad im mathematischen Uhrzeigersinn gedreht werden.

Aufruf

RUN public\lib3D.AddText(nID, "Test", "Arial", 180, 100, 2)

Parameter

nID NUM Liefert den ID-Wert des erzeugten Textes

sText STRING Der Text welcher generiert werden soll

sFont STRING Schriftart, sollte eine Windows-Standardfont sein

nHeight NUM Schriftgrad

nThickness NUM Schriftstärke

nLayer NUM Optional, weist dem geladenen Objekt diesen Layer zu


DrawMeasureLine

Zeichnet eine Maßlinie.

Aufruf

nID = 0 : nLayer = 1 : nX1 = 300 : nX2 = 1000

RUN public\lib3D.DRAWMEASURELINE(nID, nX1, 0, 100, nX2, 0, 100, STR$(nX2-nX1) + " mm", nLayer)

Parameter

nID NUM Liefert den ID-Wert der erzeugten Maßlinie

nX1 NUM X-Koordinate des ersten Punktes der Maßlinie

nY1 NUM Y-Koordinate des ersten Punktes der Maßlinie

nZ1 NUM Z-Koordinate des ersten Punktes der Maßlinie

nX2 NUM X-Koordinate des zweiten Punktes der Maßlinie

nY2 NUM Y-Koordinate des zweiten Punktes der Maßlinie

nZ2 NUM Z-Koordinate des zweiten Punktes der Maßlinie

sText STRING Bemaßungstext, bei Leerstring wird das Maß zwischen dem Anfangspunkt und dem Endpunkt ermittelt und angezeit

nLayer NUM Optional


DrawMeasureObject

Greift die Objektabmasse eines Objektes ab und generiert wahlweise die X- bzw. Y- bzw. Z-Bemaßungen

Aufruf

RUN public\lib3D.DRAWMEASUREOBJECT(nIDO, nIDM, TRUE, TRUE, TRUE)

Parameter

nIDO NUM ID-Wert des zu bemaßenden Objektes

nIDM NUM Liefert den ID-Wert der Maßlinie(n)

bX NUM True … Bemaßung in X-Richtung, False … keine Bemaßung

bY NUM True … Bemaßung in Y-Richtung, False … keine Bemaßung

bZ STRING True … Bemaßung in Z-Richtung, False … keine Bemaßung

nLayer NUM Optional


SetMeasureProperties

Mit dieser Methode können die Bemaßungseinstellungen gesetzt werden.

Aufruf

RUN public\lib3D.SETMEASUREPROPERTIES("Arial", 0.05, 0.01, 1, 2)

Parameter

sFont STRING Der Name einer vorinstallierte Schriftart z.b. “Arial“

nFontHeight NUM Höhe der Schriftart, 1 entspricht Window-Höhe

nDistance NUM Abstand der Maßlinien zum Maßobjekt

nUnit NUM 0 … mm, 1 ... cm, 2 … m

nRoundTo NUM Anzahl der Nachkommastellen


GEOMETRISCHE ELEMENTE ERZEUGEN

DrawQuader

Erzeugt einen Quader mit der Methode Extrusion. Zur Performanceverbesserung sollte man besser die Methode DrawBox verwenden.

Aufruf

RUN public\lib3D.DRAWQUADER(nID, 1000, 1000, 1000)

Parameter

nID NUM Liefert die ID des erzeugten Quaders

nX NUM x-Maß des Quader

nY NUM y-Maß des Quaders

nZ NUM z-Maß des Quaders

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawQuaderHorizontal

Erzeugt einen Quader mit der Methode Extrusion. wobei der Extrusionspfad horizontal verläuft (Texturverlauf). Zur Performanceverbesserung sollte man besser die Methode DrawBox verwenden.

Aufruf

RUN public\lib3D.DRAWQUADERHORIZONTAL(nID, 1000, 1000, 1000)

Parameter

nID NUM Liefert die ID des erzeugten Quaders

nX NUM x-Maß des Quader

nY NUM y-Maß des Quaders

nZ NUM z-Maß des Quaders

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawBox

Erzeugt einen Quader

Aufruf

RUN public\lib3D.DRAWBOX(nID, 1000, 1000, 1000)

Parameter

nID NUM Liefert die ID des erzeugten Quaders

nX NUM x-Maß des Quader

nY NUM y-Maß des Quaders

nZ NUM z-Maß des Quaders

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawZylinder

Erzeugt einen Zylinder mit der Methode Extrusion.

Aufruf

RUN public\lib3D.ZYLINDER(nID, 1000, 800)

Parameter

nID NUM Liefert die ID des erzeugten Zyinders

nDM NUM Der Durchmesser des Zylinders

nHeight NUM Die Höhe des Zylinders

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawCylinder

Erzeugt einen Zylinder.

Aufruf

RUN public\lib3D.CYLINDER(nID, 1000, 800, 60)

Parameter

nID NUM Liefert die ID des erzeugten Zyinders

nDM NUM Der Durchmesser des Zylinders

nHeight NUM Die Höhe des Zylinders

nSeg NUM Anzahl der Segmente

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawCone

Erzeugt einen Kegel oder einen Kegelstumpf

Aufruf

RUN public\lib3D.DRAWCONE(nID, 300, 0, 700, 60)

Parameter

nID NUM Liefert die ID des erzeugten Kegels oder Kegelstumpfes

nRadBottom NUM Radius am Fußpunkt des Kegels

nRadTop NUM Radius an der Spitze des Kegels, ist dieser 0 ergibt dies einen Kegel und keinen Kegelstumpf!

nHeight NUM Höhe des Kegel oder des Kegelstumpfes

nSeg NUM Anzahl der Segmente

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawSphere

Erzeugt eine Kugel.

Aufruf

RUN public\lib3D.DRAWSPHERE(nID, 300, 60, 60)

Parameter

nID NUM Liefert die ID der erzeugten Kugel

nRadius NUM Radius der Kugel

nSeg1 NUM Anzahl der Flächen entlang des Äquators

nSeg2 NUM Anzahl der Segmente von Pol zu Pol

nLayer NUM Optional, Layer der zugeordnet werden kann


DrawTorus

Erzeugt eine Reifen (Torus)

Aufruf

RUN public\lib3D.DRAWTORUS(nID, 300, 150, 60, 60)

Parameter

nID NUM Liefert die ID des erzeugten Reifens

nRadL NUM Radius des großen Kreises

nRadS NUM Radius des kleinen Kreises

nSegL NUM Anzahl der Segmente entlang des großen Kreises

nSegS NUM Anzahl der Segmente entlang des kleinen Kreises

nLayer NUM Optional, Layer der zugeordnet werden kann


OBJEKTE DURCH EXTRUSIONEN ERZEUGEN

Extrusion

Extrudiert eine 2D Kontur entlang eines Pfades. Die Kontur wird in Relation zu einem frei wählbaren Punkt gesetzt, welcher dann den Extrusionspfad abläuft.

Aufruf

nID = 0

lstO = {SEGMENT([10, 0],[80, 0]),

SEGMENT([80, 0],[80,50]),

SEGMENT([80,50],[ 0,70]),

SEGMENT([ 0,70],[10, 0]) }

vRP = [0,0] : lstRef = {0,1,0}

pEP1 = {0,0,0} : pEP2 = {200,100,0} :pEP3 = {300,-100,1200}

lstPart1 = {pEP1, pEP2} : lstPart2 = {pEP2, pEP3}

lstEP = {pPart1, pPart2}

RUN public\lib3D.EXTRUSION(nID, lstO, vRP, lstRef, lstEP)

Parameter

nID NUM Liefert den ID-Wert des extrudierten Objekts, falls in Ordnung

lstO LIST {SEGMENT,SEGMENT,SEGMENT,...} Profil (Fläche) die extrudiert wird!

vRP VECTOR [NUM,NUM] Relationspunkt der Outline!

lstRef LIST {NUM,NUM,NUM} - Referenzvektor für die Extrusion Die Lage der X-Achse(2D) im 3D-Raum!

lstEP LIST {{{NUM,NUM,NUM},{NUM,NUM,NUM}},...} Eigentlicher Extrusionspfad im 3D-Raum!

nLayer NUM Optional, weist dem extrudierten Objekt diesen Layer zu


X_Extrusion

Extrudiert eine 2D-Outline in die X Richtung. Wird oft für Testzwecke verwendet!

Aufruf

nID = 0

lstOutline = {SEGMENT([10, 0],[80, 0]),

SEGMENT([80, 0],[80,50]),

SEGMENT([80,50],[ 0,70]),

SEGMENT([ 0,70],[10, 0]) }

nLength = 30

RUN public\lib3D.X_EXTRUSION(nID, lstOutline, nLength)

Parameter

nID NUM Liefert den ID-Wert des erzeugten Extrusionskörpers

lstOutline LIST {SEGMENT,SEGMENT,SEGMENT,...} Profil (Fläche) die extrudiert wird!

nLength NUM Länge der Extrusionsstrecke

xOffset NUM Optional, Verschiebung des Körpers entlang der x-Achse

yOffset NUM Optional, Verschiebung des Körpers entlang der y-Achse

zOffset NUM Optional, Verschiebung des Körpers entlang der z-Achse


Y_Extrusion

Extrudiert eine 2D-Outline in die Y Richtung. Wird oft für Testzwecke verwendet!

Aufruf

nID = 0

lstOutline = {SEGMENT([10, 0],[80, 0]),

SEGMENT([80, 0],[80,50]),

SEGMENT([80,50],[ 0,70]),

SEGMENT([ 0,70],[10, 0]) }

nDeep = 30

RUN public\lib3D.Y_EXTRUSION(nID, lstOutline, nDeep)

Parameter

nID NUM Liefert den ID-Wert des erzeugten Extrusionskörpers

lstOutline LIST {SEGMENT,SEGMENT,SEGMENT,...} Profil (Fläche) die extrudiert wird!

nDeep NUM Tiefe (Dicke) der Extrusion

xOffset NUM Optional, Verschiebung des Körpers entlang der x-Achse

yOffset NUM Optional, Verschiebung des Körpers entlang der y-Achse

zOffset NUM Optional, Verschiebung des Körpers entlang der z-Achse


Z_Extrusion

Extrudiert eine 2D-Outline in die Z Richtung. Wird oft für Testzwecke verwendet!

Aufruf

nID = 0

lstOutline = {SEGMENT([10, 0],[80, 0]),

SEGMENT([80, 0],[80,50]),

SEGMENT([80,50],[ 0,70]),

SEGMENT([ 0,70],[10, 0]) }

nHeight = 30

RUN public\lib3D.Z_EXTRUSION(nID, lstOutline, nHeight)

Parameter

nID NUM Liefert den ID-Wert des erzeugten Extrusionskörpers

lstOutline LIST {SEGMENT,SEGMENT,SEGMENT,...} Profil (Fläche) die extrudiert wird!

nHeight NUM Höhe der Extrusion

xOffset NUM Optional, Verschiebung des Körpers entlang der x-Achse

yOffset NUM Optional, Verschiebung des Körpers entlang der y-Achse

zOffset NUM Optional, Verschiebung des Körpers entlang der z-Achse


RotExtrusion

Erzeugt ein neues Objekt indem eine 2D Kontur um eine Achse gedreht wird. Die 2D Kontur darf dabei die Achse nicht schneiden. Liegen der Anfangs- und Endpunkt der 2D Kontur nicht auf der Achse, so fügt RotExtrusion zusätzliche schließende Segmente ein. AngleStart und AngleEnd können dazu verwendet werden, Tortenstücke anstelle von kompletten Rotationskörpern zu erzeugen.

Aufruf

nID = 0

lstO=SEGMENT([0,110],[10,110]), SEGMENT([10,110],[25,10]),

SEGMENT([25,10],[105,10]), SEGMENT([105,10],[105,110]),

SEGMENT([105,110],[210,110]), SEGMENT([210,110],[210,100]),

SEGMENT([210,100],[115,100]), SEGMENT([115,100],[0,115]) }

pAxisStart = [0,0] : pAxisEnd = [1,0]

nStartA = 0 : nStopA = 360

nFacets = 36

RUN public\lib3D.ROTEXTRUSION(nID, lstO, pAxisStart, pAxisEnd, nStartA, nStopA, nFacets)

Parameter

nID NUM Liefert den ID-Wert des erzeugten Extrusionskörpers

lstO LIST {SEGMENT,SEGMENT,SEGMENT,...} Profil (Fläche) die extrudiert wird!

pAxisStart VECTOR [NUM,NUM], Startpunkt

pAxisEnd VECTOR [NUM,NUM], Endpunkt

nStartA NUM Startwinkel

nStopA NUM Endwinkel

nFacets NUM Anzahl an Teilflächen die erzeugt werden sollen

nLayer NUM Optional, weist dem extrudierten Objekt diesen Layer zu


OBJEKTE DURCH GEOMETRISCHE OPERATIONEN ERZEUGEN

Union

Mit der Union-Methode werden zwei Objekte zu einem neuen Objekt verschmolzen.

Aufruf

RUN public\lib3D.UNION(nNewId, nID1, nId2)

Parameter

nNewID NUM Liefert den ID-Wert des verschmolzenen Objektes

nID1 NUM ID des ersten Objektes (obj1)

nID2 NUM ID des zweiten Objektes (obj2)


ObjIntersection

Erzeugt ein neues Objekt, das sich aus der geometrischen Schnittmenge der beiden Ausgangsobjekte ergibt. Bitte anstatt dieser Methode ForceIntoBox verwenden!

Aufruf

RUN public\lib3D.OBJINTERSECTION(nNewId, nId1, nId2, nKillOpt)

Parameter

nNewID NUM Liefert den ID-Wert des neu entstandenen Objektes

nID1 NUM ID des ersten Objektes

nID2 NUM ID des zweiten Objektes

nKillOpt NUM 1 … Das erste Objekt wird gelöscht

2 … Das zweite Objekt wird gelöscht

3 … Beide Objekte werden gelöscht


ForceIntoBox

Erzeugt ein neues Objekt, das sich aus der geometrischen Schnittmenge der beiden Ausgangsobjekte ergibt. Diese Methode sollte anstatt von ObjIntersection verwendet werden!

Aufruf

RUN public\lib3D.FORCEINTOBOX(nNewId, nId1, nId2, nKillOpt)

Parameter

nNewID NUM Liefert den ID-Wert des neu entstandenen Objektes

nID1 NUM ID des ersten Objektes

nID2 NUM ID des zweiten Objektes

nKillOpt NUM 1 … Das erste Objekt wird gelöscht

2 … Das zweite Objekt wird gelöscht

3 … Beide Objekte werden gelöscht


Difference

Erzeugt ein neues Objekt, das sich aus der geometrischen Differenz der beiden Ausgangsobjekte ergibt.

Vom Objekt obj1 wird das Objekt obj2 geometrisch abgezogen. (siehe auch GroupDifference!).

Aufruf

RUN public\lib3D.DIFFERENCE(nNewId, nId1, nId2, nKillOpt)

Parameter

nNewID NUM Liefert den ID-Wert des neu entstandenen Objektes

nID1 NUM ID des Objektes von dem etwas abgezogen wird

nID2 NUM ID des Abzugobjektes

nKillOpt NUM 1 … Das erste Objekt wird gelöscht

2 … Das zweite Objekt wird gelöscht

3 … Beide Objekte werden gelöscht


GroupDifference

Erzeugt ein neues Objekt, das sich aus der geometrischen Differenz der beiden Ausgangsobjekte ergibt.

Vom Objekt obj1 wird das Objekt obj2 geometrisch abgezogen. (siehe auch Difference!).

Aufruf

RUN public\lib3D.GROUPDIFFERENCE(nNewId, nId1, nId2, nKillOpt)

Parameter

nNewID NUM Liefert den ID-Wert des neu entstandenen Objektes

nID1 NUM ID des Objektes von dem etwas abgezogen wird

nID2 NUM ID des Abzuggruppenobjektes

nKillOpt NUM 1 … Das erste Objekt wird gelöscht

2 … Das zweite Objekt wird gelöscht

3 … Beide Objekte werden gelöscht


CutObject

Schneidet ein Objekt in zwei Teile. Die Schnittebene wird durch einen Punkt und einen Normalvektor bestimmt.

Aufruf

RUN public\lib3D.CUTOBJECT(nId1, nId2, 0, 0, 1000, 1, 0, 0, 1)

Parameter

nID1 NUM ID des Objektes, welche geschnitten wird.

nID2 NUM ID die zurückgegeben wird – siehe nCutOpt

nX NUM X-Koordinate des Schnittpunktes

nY NUM Y-Koordinate des Schnittpunktes

nZ NUM Z-Koordinate des Schnittpunktes

nNormX NUM X-Koordinate des Normalvektors auf die Schnittebene (-1, 0 oder 1)

nNormY NUM Y-Koordinate des Normalvektors auf die Schnittebene (-1, 0 oder 1)

nNormZ NUM Z-Koordinate des Normalvektors auf die Schnittebene (-1, 0 oder 1)

nCutOpt NUM 1 … Das abgeschnittene Objekt wird gelöscht

2 … Das geschnittene Objekt wird gelöscht

3 … Keines der Objekte wird gelöscht, es entstehen 2 neue Objekte.


METHODEN ZUR OBJEKTMANIPULATION

KillObject

Löscht ein Objekt aus dem Szenario.

Aufruf

RUN public\lib3D.KILLOBJECT(nId)

Parameter

nID NUM ID eines Objektes


KillAllObjects

Löscht alle Objekte des Szenarios.

Aufruf

RUN public\lib3D.KILLALLOBJECTS


DeleteGroupObj

Diese Methode löscht ein Gruppenelement sowie deren Elemente.

Aufruf

RUN public\lib3D.DELETEGROUPOBJ(nId)

Parameter

nID NUM ID eines Objektes


SetElementMaterial

Weist einem Objekt ein Material zu, welches im "MATERIAL.COL"-File hinterlegt wurde.

Aufruf

RUN public\lib3D.SETELEMENTMATERIAL(nId, "RAL5014", "moveit")

Parameter

nID NUM ID eines Objektes

sMaterial STRING Name des Materials bzw. der Textur im Materialeditor

sCatalogname STRING Name eines anderen Kataloges, welche unter dem Ordner PATH + "OBJ\" existieren muss!


SetElementName

Weist einem Objekt einen neuen Namen zu.

Aufruf

RUN public\lib3D.SETELEMENTNAME(nId, "Objektname")

Parameter

nID NUM ID eines Objektes

sName STRING Neuer Name für das Objekt


SetModifiedElementMaterial

Objekt ein Material zuweisen, welches im "MATERIAL.COL"-File hinterlegt wurde, wobei die Textur modifiziert werden kann

Aufruf

RUN public\lib3D.SETMODIFIEDELEMENTMATERIAL(nId, "RAL5014", "Rotate90")

Parameter

nID NUM ID eines Objektes

sMaterial STRING Name des Materials bzw. der Textur im Materialeditor

pModification STRING "", Textur wird nicht verändert

"Rotate90", Rotiert die Textur um 90 Grad

"VerticalMirror", Spiegelt die Textur vertikal

"HorizontalMirror", Spiegelt die Textur horizontal

sCatalogname STRING Name eines anderen Kataloges, welche unter dem Ordner PATH + "OBJ\" existieren muss!


ScaleTo

Ein wird in drei Achsen auf die angegebenen Längen skaliert. Bei Eingabe von 0 bleibt das Originalmaß erhalten.

Aufruf

RUN public\lib3D.SCALETO(nId, nX, nY, nZ)

Parameter

nID NUM ID eines Objektes

nX NUM x-Maß auf welches das Objekt skaliert wird

nY NUM y-Maß auf welches das Objekt skaliert wird

nZ NUM z-Maß auf welches das Objekt skaliert wird


ScaleBy

Ein Objekt wird in drei Achsen um drei Faktoren skaliert. Ist pX bzw. pY bzw. pZ gleich 1. so bedeutet dies keine Skalierung auf den jeweiligen Achsen

Aufruf

RUN public\lib3D.SCALEBY(nId, nX, nY, nZ)

Parameter

nID NUM ID eines Objektes

nX NUM x-Maß auf welches das Objekt skaliert wird

nY NUM y-Maß auf welches das Objekt skaliert wird

nZ NUM z-Maß auf welches das Objekt skaliert wird


RotateTo

Ein Objekt wird um einen Rotationspunkt und um eine Achse an einem absoluten Winkel rotiert.

Aufruf

RUN public\lib3D.ROTATETO(nId,1, nX, nY, nZ, nWinkel)

Parameter

nID NUM ID eines Objektes

nAxis NUM Die Achse um die rotiert werden soll

1 … x-Achse, 2 … y-Achse, 3 … z-Achse

nX NUM x-Koordinate des Rotationspunktes

nY NUM y-Koordinate des Rotationspunktes

nZ NUM z-Koordinate des Rotationspunktes

nWinkel NUM Winkel in Grad!


RotateBy

Ein Objekt wird um einen Rotationspunkt und um eine Achse an einem relativen Winkel rotiert.

Aufruf

RUN public\lib3D.ROTATEBY(nId,1, nX, nY, nZ, nWinkel)

Parameter

nID NUM ID eines Objektes

nAxis NUM Die Achse um die rotiert werden soll

1 … x-Achse, 2 … y-Achse, 3 … z-Achse

nX NUM x-Koordinate des Rotationspunktes

nY NUM y-Koordinate des Rotationspunktes

nZ NUM z-Koordinate des Rotationspunktes

nWinkel NUM Winkel in Grad!


TranslateTo

Ein Objekt wird absolut an die angegebene Stelle an nX, nY und nZ verschoben.

Aufruf

RUN public\lib3D.TRANSLATETO(nId, nX, nY, nZ)

Parameter

nID NUM ID eines Objektes

nX NUM x-Koordinate wohin das Objekt verschoben werden soll

nY NUM y-Koordinate wohin das Objekt verschoben werden soll

nZ NUM z-Koordinate wohin das Objekt verschoben werden soll


TranslateBy

Ein Objekt wird relativ vom Ausgangspunkt um nX, nY und nZ verschoben.

Aufruf

RUN public\lib3D.TRANSLATEBY(nId, nX, nY, nZ)

Parameter

nID NUM ID eines Objektes

nX NUM Wert um wieviel in x-Richtung verschoben werden soll

nY NUM Wert um wieviel in y-Richtung verschoben werden soll

nZ NUM Wert um wieviel in z-Richtung verschoben werden soll


TranslateByLst

Ein Objekt wird relativ vom Ausgangspunkt um die Zahlentripleliste {nX, nY, nZ} verschoben.

Aufruf

RUN public\lib3D.TRANSLATEBYLST(nId, {nX, nY, nZ})

Parameter

nID NUM ID eines Objektes

{nX, nY, nZ} LIST Liste die die Verschiebungsmaße X,Y,Z enthält


Smooth

Glättet runde Objekte wie Kugeln oder Zylinder.

Aufruf

RUN public\lib3D.SMOOTH(nId, 30)

Parameter

nID NUM ID des zu glättenden Objektes

Glättungswinkel NUM Glättungswinkel in Grad, empfohlen werden 20° - 30° Grad!


UnSmooth

Mit UnSmooth() wird die Glättung wieder zurückgesetzt.

Aufruf

RUN public\lib3D.UnSmooth(nId)

Parameter

nID NUM ID des Objektes dem bereits Glättung widerfahren ist.


Beautify

Löscht alle Linien in der 3D Darstellung, wo der Winkel kleiner als der Grenzwinkel ist

Aufruf

RUN public\lib3D.BEAUTIFY(nId, 30)

Parameter

nID NUM ID des Objektes wo die Hilfslinien gelöscht werden sollen.

nDegrees NUM Grenzwinkel, sollte zwischen 20 und 30 liegen


SetElementLayer

Weist einem Objekt einen Layer zu

Aufruf

RUN public\lib3D.SETELEMENTLAYER(nId, 2)

Parameter

nID NUM ID des Objektes dem Layer zugeordnet werden soll

nLayer NUM Der Layer der dem Objekt zugeordnet werden soll


SetGroupLayer

Weist einem Gruppenobjekt einen Layer zu

Aufruf

RUN public\lib3D.SETGROUPLAYER(nId, 2)

Parameter

nID NUM ID des Gruppenobjektes dem Layer zugeordnet werden soll

nLayer NUM Der Layer der dem Gruppenobjekt zugeordnet werden soll


SetVisibility

Mit dieser Methode kann die Sichtbarkeit eines Objekts verändert werden.

Aufruf

RUN public\lib3D.SETVISIBILITY(nID, TRUE)

Parameter

nID NUM ID des Objektes welches sichtbar oder unsichtbar werden soll

bVisibility BOOL True … Sichtbar, False … Unsichtbar


METHODEN DES OBJECTVIEWER’S

SetGraphicViewId

Mit dieser Methode setzt man die Grafiksicht.

Aufruf

RUN public\lib3D.SetGraphicViewId(3)

Parameter

pnViewId NUM Grafiksichtcode


SetView

Mit diese Methode legt man fest, von wo man auf das Objekt schaut. Sollte nicht mehr verwendet werden. Bitte public\lib3D.SetGraphicViewId anstelle von SetView verwenden.

Aufruf

RUN public\lib3D.SETVIEW(237, 33, 161) !Schrägriss

RUN public\lib3D.SETVIEW( 90, 180, 0) !Innenansicht

RUN public\lib3D.SETVIEW( 90, 0, 0) !Außenansicht

RUN public\lib3D.SETVIEW(180, 0, 180) !Ansicht von oben

RUN public\lib3D.SETVIEW(180, 180, 0) !Ansicht von unten

RUN public\lib3D.SETVIEW( 90, 90, 0) !Ansicht von rechts

RUN public\lib3D.SETVIEW( 90, -90, 0) !Ansicht von links

Parameter

nX NUM Gradangabe für x-Achse

nY NUM Gradangabe für y-Achse

nZ NUM Gradangabe für z-Achse


Rendermode

Mit diese Methode legt man die Darstellung der Objekte des Objektviewers fest. Sollte man nicht mehr verwenden. Bitte den Rendermode nur in der Grafiksicht hinterlegen.

Aufruf

RUN public\lib3D.RENDERMODE(1)

Parameter

nModus NUM 0 … Wireframe Linien (Wird nicht mehr verwendet!)

1 … Schattierte Darstellung

2 … Schattierte Darstellung inkl. Kantenverstärkung

3 … Verbesserte Darstellung mit Farbflächen

4 … Verbesserte Darstellung mit Farbflächen inklusive Kantenverstärkung


DrawImage

Erzeugt ein bzw. mehrere Bild(er) in der 3D-Ansicht. Bereiche im Bild die die Farbe (Rot:0 Grün: 255 Blau:0) haben, werden transparent dargestellt. Mittels dem optionalen Parameter nLayer kann man die Reihenfolge/Ansicht des Bildes steuern.

Aufruf

RUN public\lib3D.DRAWIMAGE(nID_OV, sImagePath, 0, 0, 100, 100) !Ohne Layer

RUN public\lib3D.DRAWIMAGE(nID_OV, sImagePath, 0, 0, 100, 100, 2) !Mit Layer

Parameter

nID NUM ID des Image-Objektes, welche mit KillImage gelöscht werden kann.

Wenn die Prozedur erfolgreich durchgeführt werden konnte, wird ein Positive Zahl zurückgegeben, anderfalls -1.

sImagePath STRING Vollständiger Pfad mit Dateinamen mit Endung

xPos NUM X-Koordinate der linken unteren Ecke der Bitmap in mm

yPos NUM Y-Koordinate der linken unteren Ecke der Bitmap in mm

nWidth NUM Gewünschte Breite der Bitmap in mm

nHeight NUM Gewünschte Höhe der Bitmap in mm

nAngle NUM Winkel, um den die Bitmap gedreht werden soll. Derzeit werden folgende Winkel unterstützt: 0, 90, 180 und 270 Grad.

nLayer NUM Optional, weist dem erzeugtem Bild diesen Layer zu


KillImage

Löscht ein Image-Objekt.

Aufruf

RUN public\lib3D.KILLIMAGE(nID)

Parameter

nID NUM ID des Image-Objektes welches gelöscht werden soll, wir hier 0 angegeben, so werden alle Image-Objekte gelöscht.


GetRealBitmapSize

Ermittelt die Bitmapgröße im mm. Damit die Ermittlung funktioniert, muss die Größe in der Bitmap richtig gesetzt sein (Größe = Pixelanzahl / DPI) und der DPI-Wert sollte immer ganzzahlig sein

Aufruf

RUN public\lib3D.GETREALBITMAPSIZE(PATH+"OBJ\Images\G.JPG", nH, nB)

Parameter

sImage STRING Vollständiger Pfad mit Dateinamen und Endung

nH NUM Rückgabewert der Höhe in mm

nB NUM Rückgabewert der Breite in mm


Viewmode

Mit diese Methode legt man den Anzeigemodus das Objektviewers fest. Sollte nicht mehr verwendet werden. Bitte ViewMode nur in der Grafiksicht hinterlegen.

Aufruf

RUN public\lib3D.VIEWMODE(1)

Parameter

nModus NUM 1 … Orthogonal (mathematisch korrekt)

2 … Perspektive (geschönt)


ResetZoom

Mit diese Methode sieht man wieder alle Objekte auf dem ObjectViewer, d.h. alle Verkleinerungen oder Vergrößerungen der Grafikanzeige sind nicht mehr aktiv.

Aufruf

RUN public\lib3D.RESETZOOM


EnableOriginAxis

Ein- bzw. Ausblenden des Koordinatenursprungs

Aufruf

RUN public\lib3D.ENABLEORIGINAXIS(false)

Parameter

bShowAxes BOOLTrue … Koordinatenachsen anzeigen, False … nicht anzeigen


EnableRotation

Rotation ein- bzw. ausschalten

Aufruf

RUN public\lib3D.ENABLEROTATION(false)

Parameter

bRotation BOOLTrue … Rotation möglich, False … keine Rotation möglich


EnableRotationAxis

Rotationsachsen ein- bzw. ausblenden

Aufruf

RUN public\lib3D.ENABLEROTATIONAXIS(false)

Parameter

bShowRotAxis BOOL True … Rotationsachsen anzeigen, False … nicht anzeigen


Add3DLine

Fügt der Szenerie eine 3D-Linie hinzu.

Aufruf

RUN public\lib3D.Add3DLine(nID, 0, 0, 0, 100, 0, 0)

Parameter

pnID_ObjectViewer NUM '3DLine-Objekt-ID' (welche mit public\lib3D.Remove3DLine bzw. public\lib3D.ClearAll3DLines gelöscht werden kann)

pnPositionFromX NUM X-Koordinate des ersten Punktes der 3D-Linie

pnPositionFromY NUM Y-Koordinate des ersten Punktes der 3D-Linie

pnPositionFromZ NUM Z-Koordinate des ersten Punktes der 3D-Linie

pnPositionToX NUM X-Koordinate des zweiten Punktes der 3D-Linie

pnPositionToY NUM Y-Koordinate des zweiten Punktes der 3D-Linie

pnPositionToZ NUM Z-Koordinate des zweiten Punktes der 3D-Linie

pnColor NUM Farbcode (optional)

pnWidth NUM Die Breite der Linie entspricht der Definition der Linienbreite in OpenGL (optional)

pnStyle NUM Linientypen (optional) / 1:Durchzogen / 2: strichliert / 3: punktiert / 4: strichpunktiert

pnLayer NUM Angabe des Layers (optional)


Remove3DLine

Löscht die angegebene 3D-Linie.

Aufruf

RUN public\lib3D.Remove3DLine(nID)

Parameter

pnID_ObjectViewer NUM '3DLine-Objekt-ID' (welche mit public\lib3D.Add3DLine erzeugt wurde)


ClearAll3DLines

Löscht alle angegebene 3D-Linien, welche mit public\lib3D.Add3DLine erzeugt wurden.

Aufruf

RUN public\lib3D.ClearAll3DLines


METHODEN UM OBJEKTINFORMATION ABZUFRAGEN

GetElementName

Liefert den Namen eines Objektes zurück.

Aufruf

RUN public\lib3D.GetElementName(nId, sName)

Parameter

nID NUM ID eines Objektes

sName STRING Der Name des Objektes, sofern vorhanden, ansonsten ““


GetElementSize

Ermittelt die räumliche Größe eines Objekts. Ist bei geladenen Objekten interessant wie z.B. bei Türgriffen oder ähnlichen Objekten, welche man nicht selber erzeugt hat.

Aufruf

RUN public\lib3D.GetElementSize(nId, nSizeX, nSizeY, nSizeZ)

Parameter

nID NUM ID eines Objektes

nSizeX NUM Rückgabe X-Maß des Objektes

nSizeY NUM Rückgabe Y-Maß des Objektes

nSizeZ NUM Rückgabe Z-Maß des Objektes


GetElementPosition

Ermittelt die absolute Position eines Objektes

Aufruf

RUN public\lib3D.GETELEMENTPOSITION(nId, nPosX, nPosY, nPosZ)

Parameter

nID NUM ID eines Objektes

nPosX NUM x-Koordinate der Absolutposition

nPosY NUM y-Koordinate der Absolutposition

nPosZ NUM z-Koordinate der Absolutposition


GetObjectCenter

Bestimmt den absoluten-Mittelpunkt eines Objekts.

Aufruf

RUN public\lib3D.GETOBJECTCENTER(nId, nX, nY, nZ)

Parameter

nID NUM ID des Objektes dessen Mittelpunkt ermittelt werden soll

nX NUM X-Koordinate des Mittelpunktes des Objektes

nY NUM Y-Koordinate des Mittelpunktes des Objektes

nZ NUM Z-Koordinate des Mittelpunktes des Objektes


IsObjectID

Stellt fest, ob die angegebene ID gültig ist bzw. ob die ID zu einem Objekt gehört.

Aufruf

RUN public\lib3D.ISOBJECTID(nID, bOK)

Parameter

nID NUM ID eines Objektes

bOK BOOL True … ID ist gültig, False … ID ist ungültig (kein Objekt)


GetFather

Diese Methode liefert die ID des Vaterobjektes zurück. Mit Ausnahme des Wurzelobjektes besitzt jedes Objekt immer ein Vaterobjekt.

Aufruf

RUN public\lib3D.GETFATHER(nID, nIDFather)

Parameter

nID NUM ID eines Objektes

nIDFather NUM Liefert die ID des Vaterobjektes zurück


METHODEN FÜR CATCHPOINTS / PICKPOINTS

AddCatchPoint

Weist einem Objekt einem Catchpoint zu. Ein CatchPoint ist ein Punkt an dem andere CatchPoints einrasten können, wobei die Ausrichtung des anderen Objektes keine Rolle spielt.

Aufruf

RUN public\lib3D.ADDCATCHPOINT(nID, "Name", "*", 0, 0, 0)

Parameter

nID NUM ID des Objekts, wo ein Catchpoint angefügt werden sollte

sName STRING Name des CatchPoints. Nur CatchPoints mit identischem Namen können an diesem CatchPoint einrasten. Eine Ausnahme bildet der Name "". An so einem CatchPoint kann jeder andere einrasten

sMaske STRING Vergleichsmaske. Von verschiebenden Catchpoints wird der Name genommen und mit der Maske eines potentiellen CatchPoints verglichen. Nur dann, wenn dies eine Überein-stimmung ergibt, kann ein Catch zustande kommen, falls geometrisch die Möglichkeit besteht. Es ist auch erlaubt in der Maske auch Wildcards zu verwenden. Ein Zeichen '*' fungiert als Wildcard und stimmt mit beliebig vielen Zeichen des zu vergleichenden Namens überein. Es können beliebig viele '*' in beliebiger Anordnung verwendet werden. Wenn es eine Möglichkeit gibt, die '*' durch andere Zeichen zu ersetzen so dass der Name entsteht, so wird das als Übereinstimmung gewertet

pX NUM X-Position des CatchPoints in Bezug auf den Objektursprung

pY NUM Y-Position des CatchPoints in Bezug auf den Objektursprung

pZ NUM Z-Position des CatchPoints in Bezug auf den Objektursprung


AddCatchPointAxis

Identisch zu AddCatchPoint, mit folgenden Unterschieden: Nur andere CatchPointAxis können an dieser Stelle einrasten. Es wird zusätzlich noch eine Achse angegeben. Das einrastende Objekt wird mit seiner CatchPointAxis Achse so ausgerichtet, das beide Achsen in Übereinstimmung kommen. Die Rotation um diese Achse ist jedoch unspezifizert!

Aufruf

RUN public\lib3D.ADDCATCHPOINTAXIS(nID,"Name","*", 0, 0, 0, 0, 1, 0)

Parameter

nID NUM ID des Objekts, wo ein Catchpoint angefügt werden sollte

sName STRING Name der CatchPointaxis

sMaske STRING Vergleichsmaske (siehe AddCatchPoint)

pX NUM X-Position des CatchPoints in Bezug auf den Objektursprung

pY NUM Y-Position des CatchPoints in Bezug auf den Objektursprung

pZ NUM Z-Position des CatchPoints in Bezug auf den Objektursprung

pRefX NUM X-Referenzvektor der Achse (-1, 0 oder 1)

pRefY NUM Y-Referenzvektor der Achse (-1, 0 oder 1)

pRefZ NUM Z-Referenzvektor der Achse (-1, 0 oder 1)


AddCatchPointOrientation

Ähnlich wie AddCatchPoint, aber nur andere CatchPointOrientation können an der angegebenen Position einrasten. Das einrastende Objekt wird so ausgerichtet, das die beiden angegebenen Achsen (XAxis. und YAxis.) übereinander zu liegen kommen. Das einrastende Objekt ist damit in seiner Einrastposition und Einrastorientierung vollständig festgelegt. XAxis und YAxis sind Vektoren, die aufeinander senkrecht stehen sollten. Ist dies nicht der Fall, so wird die XAxis als fix angenommen und YAxis entsprechend nachgerechnet!

Aufruf

RUN public\lib3D.ADDCATCHPOINTORIENTATION(nID, "Name", "*", 0, 0, 0, 0, 1, 0, 0, 1, 0)

Parameter

nID NUM ID des Objekts, wo ein Catchpoint angefügt werden sollte

sName STRING Name der CatchPointOrientation

sMaske STRING Vergleichsmaske (siehe AddCatchPoint)

pX NUM X-Position des CatchPoints in Bezug auf den Objektursprung

pY NUM Y-Position des CatchPoints in Bezug auf den Objektursprung

pZ NUM Z-Position des CatchPoints in Bezug auf den Objektursprung

pXRefX NUM X-Referenzvektor der X-Achse (-1, 0 oder 1)

pXRefY NUM Y-Referenzvektor der X-Achse (-1, 0 oder 1)

pXRefZ NUM Z-Referenzvektor der X-Achse (-1, 0 oder 1)

pYRefX NUM X-Referenzvektor der Y-Achse (-1, 0 oder 1)

pYRefY NUM Y-Referenzvektor der Y-Achse (-1, 0 oder 1)

pYRefZ NUM Z-Referenzvektor der Y-Achse (-1, 0 oder 1)


AddCatchLine

Erzeugt eine CatchLine. Eine Catchline ist eine Linie an der andere CatchPoints einrasten können. CatchLines sind rein passive Objekte, an ihnen kann etwas einrasten, sie selbst können jedoch nirgends wo einrasten

Aufruf

RUN public\lib3D.ADDCATCHLINE(nID, "Name", "*", 0, 0, 0, 100, 0, 0)

Parameter

nID NUM ID des Objekts, wo ein CatchLine angefügt werden sollte

sName STRING Name der CatchLine

sMaske STRING Vergleichsmaske (siehe AddCatchPoint)

fromX NUM X-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

fromY NUM Y-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

fromZ NUM Z-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

toX NUM X-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung

toY NUM Y-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung

toZ NUM Z-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung


AddCatchLineAxis

Ähnlich wie AddCatchLine, aber nur andere CatchPointAxis können an dieser Stelle einrasten. Es wird zusätzlich noch eine Achse angegeben. Das einrastende Objekt wird mit seiner CatchLineAxis Achse so ausgerichtet, das beide Achsen in Übereinstimmung kommen. Die Rotation um diese Achse ist jedoch unspezifiziert

Aufruf

RUN public\lib3D.ADDCATCHLINEAXIS(nID, "Name" , "*", 0, 0, 0, 100, 0, 0, 0, 1, 0)

Parameter

nID NUM ID des Objekts, wo ein CatchLineAxis angefügt werden sollte

sName STRING Name der CatchLineAxis

sMaske STRING Vergleichsmaske (siehe AddCatchPoint)

fromX NUM X-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

fromY NUM Y-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

fromZ NUM Z-Position des Startpunkts der CatchLine in Bezug auf den Objektursprung

toX NUM X-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung

toY NUM Y-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung

toZ NUM Z-Position des Endpunkts der CatchLine in Bezug auf den Objektursprung

pRefX NUM X-Referenzvektor der Achse (-1, 0 oder 1)

pRefY NUM Y-Referenzvektor der Achse (-1, 0 oder 1)

pRefZ NUM Z-Referenzvektor der Achse (-1, 0 oder 1)


AddCatchLineOrientation

Ähnlich wie AddCatchLine, aber nur andere CatchpointOrientation können an der angegebenen Position einrasten und die Einrastposition des Objekts ist völlig festgelegt.

Aufruf

RUN public\lib3D.ADDCATCHLINEORIENTATION(nID, "Name", "*", 0, 0, 0, 100, 0, 0, 0, 1, 0, 0, 1, 0)

Parameter

nID NUM ID des Objekts, wo ein CatchLineOrientation angefügt werden soll

sName STRING Name der CatchLineOrientation

sMaske STRING Vergleichsmaske (siehe AddCatchPoint)

fromX NUM X-Position des Startpunkts der CatchLineOrientation in Bezug auf den Objektursprung

fromY NUM Y-Position des Startpunkts der CatchLineOrientation in Bezug auf den Objektursprung

fromZ NUM Z-Position des Startpunkts der CatchLineOrientation in Bezug auf den Objektursprung

toX NUM X-Position des Endpunkts der CatchLineOrientation in Bezug auf den Objektursprung

toY NUM Y-Position des Endpunkts der CatchLineOrientation in Bezug auf den Objektursprung

toZ NUM Z-Position des Endpunkts der CatchLineOrientation in Bezug auf den Objektursprung

pXRefX NUM X-Referenzvektor der X-Achse (-1, 0 oder 1)

pXRefY NUM Y-Referenzvektor der X-Achse (-1, 0 oder 1)

pXRefZ NUM Z-Referenzvektor der X-Achse (-1, 0 oder 1)

pYRefX NUM X-Referenzvektor der Y-Achse (-1, 0 oder 1)

pYRefY NUM Y-Referenzvektor der Y-Achse (-1, 0 oder 1)

pYRefZ NUM Z-Referenzvektor der Y-Achse (-1, 0 oder 1)


CatchAlign

Mit CatchAlign kann man einen Catchpoint (Fankpunkt/Fanglinie) an einem anderen Catchpoint (Fangpunkt/Fanglinie) andocken lassen.

Aufruf

RUN public\lib3D.CATCHALIGN(nID1, "CP1", nID2, "CP1")

Parameter

nID1 NUM ID des ersten Objektes an welches das zweite Objekt angedockt werden soll

sCpName1 STRING Name des Catchpoints des ersten Objektes

nID2 NUM ID des zweiten Objektes welches an das erste angedockt werden soll.

sCpName2 STRING Name des Catchpoints des zweiten Objektes


AddAllCatchers

Weist einem Objekt an all seinen Ecken und Kanten Catchpoints bzw. Catchlinien zu

Aufruf

RUN public\lib3D.ADDALLCATCHERS(nID, "*", "*")

Parameter

nID NUM ID des Objekts, wo Catchpoints und Catchlines angefügt werden sollen

pMaskLines STRING Vergleichsmaske der Catchlines

pMaskPoints STRING Vergleichsmaske der Catchpoints


AddPickPoint

Gibt dem 3D-OCX einen Pickpoint (Bemaßungspunkt) bekannt. Werden mehr als zwei Pickpoints erstellt, so wird in der Grafikanzeige die Bemaßungsfunktion aktiviert.

Aufruf

RUN public\lib3D.ADDPICKPOINT(nId, "Pickpoint", 0, -150, 0)

Parameter

nID NUM ID des Pickpoints

sName STRING Name des Pickpoints

posX NUM Absolute X-Koordinate

posY NUM Absolute Y-Koordinate

posZ NUM Absolute Z-Koordinate


METHODEN FÜR OBJEKTATTRIBUTE

CreateStrAttribute

Für ein Objekt oder eine Objektgruppe wird ein neues Attribut von Typ "STRING" erzeugt.

Aufruf

RUN public\lib3D.CREATESTRATTRIBUTE(nId, "Attributname")

Parameter

nID NUM ID des Objekts, wofür das Attribut erzeugt wird

sAttributname STRING Name des Attributes vom Typ String


SetStrAttribute

Einem Attribut von Typ "STRING" eines Objekts wird ein Wert zugewiesen.

Aufruf

RUN public\lib3D.SETSTRATTRIBUTE(nId, "Attributname", "Attributstring")

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

sAttributvalue STRING Wert des Attributes


GetStrAttribute

Liefert den Wert eines Attributs vom Typ "STRING" eines Objekts.

Aufruf

RUN public\lib3D.GETSTRATTRIBUTE(nId, "Attributname", sValue)

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

sValue STRING Wert des Attributes


CreateDoubleAttribute

Für ein Objekt oder eine Objektgruppe wird ein neues Attribut von Typ "DOUBLE" erzeugt.

Aufruf

RUN public\lib3D.CREATEDOUBLEATTRIBUTE(nId, "Attributname")

Parameter

nID NUM ID des Objekts, wofür das Attribut erzeugt wird

sAttributname STRING Name des Attributes vom Typ DOUBLE


SetDoubleAttribute

Einem Attribut von Typ "DOUBLE" eines Objekts wird ein Wert zugewiesen.

Aufruf

RUN public\lib3D.SETDOUBLEATTRIBUTE(nId, "DName", dAttribD)

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

dAttribD NUM Wert des Double-Attributes


GetDoubleAttribute

Liefert den Wert eines Attributs vom Typ "DOUBLE" eines Objekts.

Aufruf

RUN public\lib3D.GETDOUBLEATTRIBUTE(nId, "Attributname", dValue)

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

dValue STRING Wert des Double-Attributes


CreateLongAttribute

Für ein Objekt oder eine Objektgruppe wird ein neues Attribut von Typ "LONG" erzeugt.

Aufruf

RUN public\lib3D.CREATELONGATTRIBUTE(nId, "Attributname")

Parameter

nID NUM ID des Objekts, wofür das Attribut erzeugt wird

sAttributname STRING Name des Attributes vom Typ LONG


SetLongAttribute

Einem Attribut von Typ "LONG" eines Objekts wird ein Wert zugewiesen.

Aufruf

RUN public\lib3D.SETLONGATTRIBUTE(nId, "DName", lAttribD)

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

lAttribD NUM Wert des Long-Attributes


GetLongAttribute

Liefert den Wert eines Attributs vom Typ "LONG" eines Objekts.

Aufruf

RUN public\lib3D.GETLONGATTRIBUTE(nId, "Attributname", dValue)

Parameter

nID NUM ID des Objekts

sAttributname STRING Name des Attributes

lValue STRING Wert des Long-Attributes


ZUSÄTZLICHE METHODEN DER LIB3D.BAS

CreateMaterial

Mit dieser Methode kann man Texturen dynamisch in der Datei material.col anlegen

Aufruf

RUN public\lib3D.CREATEMATERIAL(nID, "Glas1", 100, 100, "HT\Glas\Glas1.JPG")

Parameter

nID NUM ID des erzeugten Materials

sMaterialName STRING Name des Materials, welcher später mit SetElementMaterial aufgerufen werden kann.

nSizeB NUM Bildbreite - Größe der Textur im Realmaß (mm)

nSizeH NUM Bildhöhe - Größe der Textur im Realmaß (mm)

sTextureFile STRING Angabe des Pfades mit Dateiname und Endung zur Textur ausgehend von

<ISS>\MasterData\iss_<Eigner><Stammdatenversion>\OBJ\

z.B.: "IMG\Glas1.JPG" Enthält diese Angabe einen Leerstring, so bedeutet dies, das diesem Material keine Textur zugeordnet ist.

nMappingMode NUM 0 … Linear

1 … zylindrisch

2 … sphärisch

nProjection NUM 1 … entlang der X-Achse

2 … entlang der Y-Achse

3 … entlang der Z-Achse

nScaleToFit NUM 0 … pnSizeBreite und pnSizeBreite sind gültig (Standard)

1 … pnSizeBreite und pnSizeBreite sind ungültig. Die Textur wird so auf das Objekt projiziert, das sie genauso groß wie die umhüllende Box des Objektes ist.

bUsePixelMask BOOL FALSE … Keine Pixelmask

TRUE … das Pixel in der linken unteren Ecke dient als Maskenfarbe. Alle Pixel des Bildes, welche die gleiche Farbe aufweisen, werden dadurch dann durchsichtig gerendert.


SaveScenery

Exportiert die aktuelle Szenerie als BMP, JPG oder PNG.

Aufruf

RUN public\lib3D.SAVESCENERY(sFName, "BMP", 1000, 1000, false)

Parameter

sFName STRING Vollständiger Name der Datei (Pfad + Name + Endung)

sExtension STRING Endung der Datei, "BMP", "JPG" oder "PNG"

nWidth NUM Breite in Pixel, 0 bedeutet Originalgröße

nHeight NUM Höhe in Pixel, 0 bedeutet Originalgröße

bCrop BOOL False … Die Größe der Grafik entspricht exakt nWidth und nHeight

True … Die Größe der Grafik wird auf die reale Größe gestutzt


DeleteTextureCoordinates

Löscht die Texturkoordinaten für extrudierte Objekte. Um eine Textur auf ein Objekt zulegen gibt es prinzipiell zwei Möglichkeiten:

1) Die Textur steuert wie sie aufgetragen werden soll
2) Das Objekt steuert wie die Textur aufzubringen ist

Die Variante 1 ist im Allgemeinen einfacher zu benutzen und erfordert vom Programmierer und Datenersteller auch weniger Aufwand. Im einfachsten Fall erfolgt die Projektion in der Art eines Diaprojektors, der sein Bild aus einer bestimmten Koordinatenachse auf das Objekt wirft.

Die Variante 2 ist dagegen komplizierter. Hier trägt die Geometrie selbst die Information, welcher Punkt der Textur auf welchem Raumpunkt der Geometrie zu liegen kommen soll. Diese Information nennt man die Texturkoordinaten. Standardmethoden des Kernels wie Box, Cylinder, Cone, Torus oder dergleichen enthalten keine Texturkoordinaten im Gegensatz zu extrudierten Objekten. Diese verwenden Textur-koordinaten um Texturen größenrichtig aufzubringen. Eine Verwendung einer Standardprojektion ist im Allgemeinen hier nicht zielführend. Jedoch kann es in bestimmten Fällen durchaus sinnvoll sein auch bei extrudierten Objekten oder bei zugeladenen Objekten die Texturkoordinaten enthalten, diese zu entfernen und auf eine Standardprojektion nach Variante 1 zurückzuschalten.

Aufruf

RUN public\lib3D. DELETETEXTURECOORDINATES (nId)

Parameter

nID NUM ID des Objekts


DrawArrow

Erzeugt einen Pfeil mit RotExtrusion, ist jedoch besser public\GraphProcs.CreateSymbolOutline zu verwenden, da diese Methode mehr Möglichkeiten bietet.

Aufruf

RUN public\lib3D.DRAWARROW(nId, 200, 50)

Parameter

nID NUM ID des Objekts

nLength NUM Länge des Pfeiles

nDM NUM Durchmesser des Pfeiles

nLayer NUM Optional, Layer des Objekts


DrawArrowSpezial

Erzeugt einen Pfeil mit RotExtrusion, jedoch mit mehr Einstellungsmöglichkeiten als DrawArrow

Aufruf

RUN public\lib3D.DRAWARROWSPEZIAL(nId, "R", 300, 100, 50, 20)

Parameter

nID NUM ID des Objekts

sDirection STRING Richtung, „L“ Pfeil schaut nach links, „R“ Pfeil schaut nach rechts

nTotalLength NUM Gesamtlänge

nHeadLength NUM Pfeilspitzenlänge

nHeadHeight NUM Pfeilspitzendurchmesser

nArrowHeight NUM Durchmesser

nLayer NUM Optional, Layer des Objekts


pSPLIT

Splittet eine 2D-Outline in zwei Teile, der Unterschied zu Split() ist das bei vertikalerTeilung immer die linke gesplittete 2D-Outline und bei einer horizontalen Teilung immer die untere gesplittete 2D-Outline als erstes zurückgegeben wird.

Es muss stammdatenseitig sichergestellt sein, das sich nie die Splittgerade mit einem Streckenzug deckt.

Aufruf

RUN public\lib3D.PSPLIT(lstlstSplit, lOutline, segGerade)

!Ergebnis: lstlstSplit[1] -> linke 2D-Outline

! lstlstSplit[2] -> rechte 2D-Outline

Parameter

lstlstSplit LIST Liste die Outlines enthält

lOutline LIST Das Profil (Outline) welche geteilt werden soll

segGerade SEGMENT Streckenzug der die Teilungsgerade definiert


SetMouseMode

Mit der Methode kann man den Mauszeiger verändern. Wird der Vollständigkeit halber erwähnt, sollte aber nicht verwendet werden.

Aufruf

RUN public\lib3D.SETMOUSEMODE(nMode)

Parameter

nMode NUM Darstellungsmodus des Mauszeiger (ready, busy, …)



War dieser Artikel hilfreich?

What's Next