#include-once

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.14.2
 Author:         Zeitriss

#ce ----------------------------------------------------------------------------

; _BricsCAD_Create
; _BricsCAD_Document_Close
; _BricsCAD_Document_GetActivLayer
; _BricsCAD_Document_GetLayerList
; _BricsCAD_Document_GetMSpace
; _BricsCAD_Document_GetName
; _BricsCAD_Document_GetSelectionAsArray
; _BricsCAD_Document_GetVar
; _BricsCAD_Document_New
; _BricsCAD_Document_Open
; _BricsCAD_Document_Save
; _BricsCAD_Document_SaveAs
; _BricsCAD_Document_SendCommand
; _BricsCAD_Document_SetVar
; _BricsCAD_Ent_CreateArc
; _BricsCAD_Ent_CreateCircle
; _BricsCAD_Ent_CreateEllipse
; _BricsCAD_Ent_CreateLine
; _BricsCAD_Ent_CreateMText
; _BricsCAD_Ent_CreateXLine
; _BricsCAD_Ent_Copy
; _BricsCAD_Ent_Delete
; _BricsCAD_Ent_GetCenter
; _BricsCAD_Ent_GetClassName
; _BricsCAD_Ent_GetColor
; _BricsCAD_Ent_GetEndPoint
; _BricsCAD_Ent_GetHeight
; _BricsCAD_Ent_GetLayer
; _BricsCAD_Ent_GetLinetype
; _BricsCAD_Ent_GetLinetypeScale
; _BricsCAD_Ent_GetLineWeight
; _BricsCAD_Ent_GetRadius
; _BricsCAD_Ent_GetStartPoint
; _BricsCAD_Ent_GetText
; _BricsCAD_Ent_GetVisible
; _BricsCAD_Ent_Move
; _BricsCAD_Ent_Rotate
; _BricsCAD_Ent_SetColor
; _BricsCAD_Ent_SetEndPoint
; _BricsCAD_Ent_SetHeight
; _BricsCAD_Ent_SetLayer
; _BricsCAD_Ent_SetLinetype
; _BricsCAD_Ent_SetLinetypeScale
; _BricsCAD_Ent_SetLineWeight
; _BricsCAD_Ent_SetRadius
; _BricsCAD_Ent_SetStartPoint
; _BricsCAD_Ent_SetText
; _BricsCAD_Ent_List
; _BricsCAD_Event
; _BricsCAD_GetActiveDocument
; _BricsCAD_Layer_Create
; _BricsCAD_Layer_Delete
; _BricsCAD_Layer_GetColor
; _BricsCAD_Layer_GetFreeze
; _BricsCAD_Layer_GetLinetype
; _BricsCAD_Layer_GetLineWeight
; _BricsCAD_Layer_GetLock
; _BricsCAD_Layer_GetName
; _BricsCAD_Layer_GetPlottable
; _BricsCAD_Layer_GetVisible
; _BricsCAD_Layer_SetColor
; _BricsCAD_Layer_SetFreeze
; _BricsCAD_Layer_SetLinetype
; _BricsCAD_Layer_SetLineWeight
; _BricsCAD_Layer_SetLock
; _BricsCAD_Layer_SetName
; _BricsCAD_Layer_SetPlottable
; _BricsCAD_Layer_SetVisible
; _BricsCAD_Quit



; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Create
; Beschreibung ..: Erstellt eine Instanz von BricsCAD
; Syntax.........: _BricsCAD_Create()
; Parameter .....: $bVisible              - Boolean, wenn auf True wird eine sichtbare Instanz von BricsCAD gestartet
; Return ........: Erfolg                 - BricscadApp.AcadApplication-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Create($bVisible = True)
   $oBricscadApp = ObjCreate("BricscadApp.AcadApplication")
   If Not IsObj( $oBricscadApp ) Then Return SetError(1)
   $oBricscadApp.Visible = $bVisible
   ObjEvent($oBricscadApp,"_BricsCAD_Manage_Events_")
   Return $oBricscadApp
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_Close
; Beschreibung ..: Schließt ein Dokument
; Syntax.........: _BricsCAD_Document_Close( $oBricscadDocument, $bForce = False )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
;                  $bForce                - Boolean, gibt an ob ein Schließen erzwungen werden soll
; Return ........: Erfolg                 - BricscadApp.AcadApplication-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_Close($oBricscadDocument, $bForce = False)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Local $return
   If $bForce Then
	  $return = $oBricscadDocument.Close(false)
   Else
	  $return = $oBricscadDocument.Close()
   EndIf
   $oBricscadDocument = 0
   Return $return
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetActivLayer
; Beschreibung ..: Ermittelt den aktiven Layer
; Syntax.........: _BricsCAD_Document_GetActivLayer( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - IAcadLayer-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetActivLayer($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.ActiveLayer
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetLayerList
; Beschreibung ..: Gibt alle Layer eines Dokuments als IAcadLayer-Objekt in einem Array aus
; Syntax.........: _BricsCAD_Document_GetLayerList( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - 0-Index basiertes Array
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetLayerList($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Local $iCount = $oBricscadDocument.Layers.Count
   Local $aLayer[ $iCount ]
   Local $oLayer, $i = 0
   For $oLayer in $oBricscadDocument.Layers
	  If $i >= $iCount Then
		 $iCount += 10
		 ReDim $aLayer[$iCount]
	  EndIf
	  $aLayer[ $i ] = $oLayer
	  $i += 1
   Next
   ReDim $aLayer[$i]
   Return SetExtended($i,$aLayer)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetMSpace
; Beschreibung ..: Gibt den Model-Breich eines Dokuments zurück
; Syntax.........: _BricsCAD_Document_GetMSpace( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - IAcadModelSpace-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetMSpace($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.ModelSpace
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetName
; Beschreibung ..: Gibt den Namen eines Dokuments zurück
; Syntax.........: _BricsCAD_Document_GetName( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - Namen des Dokuments als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetName($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.Name
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetSelectionAsArray
; Beschreibung ..: Gibt die aktuelle Auswahl eines Dokuments als Array zurück
; Syntax.........: _BricsCAD_Document_GetSelectionAsArray( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - 0-Basiertes Array mit allen ausgewählenten Objekten
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetSelectionAsArray($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Local $oBricscadSelectionSet = $oBricscadDocument.SelectionSets.Add("")
   $oBricscadSelectionSet.SelectOnScreen()
   Local $iCount = $oBricscadSelectionSet.Count
   Local $aEnt[ $iCount ]
   Local $oEnt, $i = 0
   For $oEnt in $oBricscadSelectionSet
	  If $i >= $iCount Then
		 $iCount += 10
		 ReDim $aEnt[$iCount]
	  EndIf
	  $aEnt[ $i ] = $oEnt
	  $i += 1
   Next
   ReDim $aEnt[$i]
   $oBricscadSelectionSet.Delete()
   Return SetExtended($i,$aEnt)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_GetVar
; Beschreibung ..: Gibt eine Variable eines Dokuments zurück
; Syntax.........: _BricsCAD_Document_GetVar( $oBricscadDocument, $sVar )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
;                  $sVar                  - Name der Variable als String
; Return ........: Erfolg                 - Inhalt der Variable
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_GetVar($oBricscadDocument, $sVar)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.GetVariable( $sVar )
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_New
; Beschreibung ..: Erstellt ein neues Dokument
; Syntax.........: _BricsCAD_Document_New( $oBricscadApp, $sTitle )
; Parameter .....: $oBricscadApp          - IAcadApplication-Objekt
;                  $sTitle                - ??? (keine Funktion)
; Return ........: Erfolg                 - IAcadDocument-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_New($oBricscadApp, $sTitle = "")
   If Not IsObj($oBricscadApp) Then Return SetError(1)
   If ObjName($oBricscadApp) <> "IAcadApplication" Then Return SetError(1)
   Local $oBricscadDocument = $oBricscadApp.Documents.add($sTitle)
   Return $oBricscadDocument
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_Open
; Beschreibung ..: Erstellt ein neues Dokument aus einer Datei
; Syntax.........: _BricsCAD_Document_Open( $oBricscadApp, $sFile )
; Parameter .....: $oBricscadApp          - IAcadApplication-Objekt
;                  $sFile                 - Dateipfad als String
; Return ........: Erfolg                 - IAcadDocument-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_Open($oBricscadApp, $sFile)
   If Not IsObj($oBricscadApp) Then Return SetError(1)
   If ObjName($oBricscadApp) <> "IAcadApplication" Then Return SetError(1)
   If Not FileExists($sFile) Then Return SetError(2)
   Local $oBricscadDocuments = $oBricscadApp.Documents
   Local $oBricscadDocument = $oBricscadDocuments.open($sFile)
   $oBricscadDocuments = 0
   Return $oBricscadDocument
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_Save
; Beschreibung ..: Speichert ein Dokument
; Syntax.........: _BricsCAD_Document_Save( $oBricscadDocument )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_Save($oBricscadDocument)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.Save()
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_SaveAs
; Beschreibung ..: Speichert ein Dokument
; Syntax.........: _BricsCAD_Document_SaveAs( $oBricscadDocument, $sFullName )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
;                  $sFullName             - Dateipfad als String
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_SaveAs($oBricscadDocument, $sFullName)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.SaveAs($sFullName)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_SendCommand
; Beschreibung ..: Sendet einen Befehl, welcher über die Befehlzeile von BricsCAD ausgeführt wird
; Syntax.........: _BricsCAD_Document_SendCommand( $oBricscadDocument, $sCommand )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
;                  $sCommand              - Befehl als String
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_SendCommand($oBricscadDocument, $sCommand)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.SendCommand($sCommand)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Document_SetVar
; Beschreibung ..: Setzt eine Variable eines Dokuments
; Syntax.........: _BricsCAD_Document_SetVar( $oBricscadDocument, $sVar, $Value )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
;                  $sVar                  - Variablen name als String
;                  $Value                 - Neuer Wert der Variable
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Document_SetVar($oBricscadDocument, $sVar, $Value)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Return $oBricscadDocument.SetVariable($sVar, $Value)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateArc
; Beschreibung ..: Erstellt ein Bogen
; Syntax.........: _BricsCAD_Ent_CreateArc( $oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iRadius, $iStartAngle, $iEndAngle )
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iXCenter              - X-Koordinate des Zentrums
;                  $iYCenter              - Y-Koordinate des Zentrums
;                  $iZCenter              - Z-Koordinate des Zentrums
;                  $iRadius               - Radius
;                  $iStartAngle           - Startwinkel in Grad
;                  $iEndAngle             - Endwinkel in Grad
; Return ........: Erfolg                 - IAcadArc-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateArc($oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iRadius, $iStartAngle, $iEndAngle)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $DtoG = ACos(-1) / 180
   Local $oEnt = $oBricscadMSpace.AddArc($iXCenter & "," & $iYCenter & "," & $iZCenter , $iRadius, $iStartAngle * $DtoG, $iEndAngle * $DtoG)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateCircle
; Beschreibung ..: Erstellt ein Kreis
; Syntax.........: _BricsCAD_Ent_CreateCircle( $oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iRadius )
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iXCenter              - X-Koordinate des Zentrums
;                  $iYCenter              - Y-Koordinate des Zentrums
;                  $iZCenter              - Z-Koordinate des Zentrums
;                  $iRadius               - Radius
; Return ........: Erfolg                 - IAcadCircle-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateCircle($oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iRadius)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $oEnt = $oBricscadMSpace.AddCircle($iXCenter & "," & $iYCenter & "," & $iZCenter , $iRadius)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateEllipse
; Beschreibung ..: Erstellt ein Kreis
; Syntax.........: _BricsCAD_Ent_CreateEllipse($oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iX, $iY, $iZ, $iRadiusRatio = 1.0)
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iXCenter              - X-Koordinate des Zentrums
;                  $iYCenter              - Y-Koordinate des Zentrums
;                  $iZCenter              - Z-Koordinate des Zentrums
;                  $iX                    - X-Koordinate der längsten Achse
;                  $iY                    - Y-Koordinate der längsten Achse
;                  $iZ                    - Z-Koordinate der längsten Achse
;                  $iRadiusRatio          - Verhältniss der längsachse zur höhe, muss kleiner sein als 1.0
; Return ........: Erfolg                 - IAcadEllipse-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateEllipse($oBricscadMSpace, $iXCenter, $iYCenter, $iZCenter, $iX, $iY, $iZ, $iRadiusRatio = 1.0)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $oEnt = $oBricscadMSpace.AddEllipse($iXCenter & "," & $iYCenter & "," & $iZCenter , $iX & "," & $iY & "," & $iZ , $iRadiusRatio)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateLine
; Beschreibung ..: Erstellt eine Linie
; Syntax.........: _BricsCAD_Ent_CreateLine( $oBricscadMSpace, $iX1, $iY1, $iZ1, $iX2, $iY2, $iZ2 )
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iX1                   - X-Koordinate vom Startpunkt
;                  $iY1                   - Y-Koordinate vom Startpunkt
;                  $iZ1                   - Z-Koordinate vom Startpunkt
;                  $iX2                   - X-Koordinate vom Zielpunkt
;                  $iY2                   - Y-Koordinate vom Zielpunkt
;                  $iZ2                   - Z-Koordinate vom Zielpunkt
; Return ........: Erfolg                 - IAcadLine-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateLine($oBricscadMSpace, $iX1, $iY1, $iZ1, $iX2, $iY2, $iZ2)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $oEnt = $oBricscadMSpace.AddLine($iX1 & "," & $iY1 & "," & $iZ1 , $iX2 & "," & $iY2 & "," & $iZ2)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateMText
; Beschreibung ..: Erstellt ein mehrzeiligen Text
; Syntax.........: _BricsCAD_Ent_CreateMText( $oBricscadMSpace, $iX, $iY, $iZ, $iWidth, $sText )
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iX                    - X-Koordinate vom Einfügepunkt
;                  $iY                    - Y-Koordinate vom Einfügepunkt
;                  $iZ                    - Z-Koordinate vom Einfügepunkt
;                  $iWidth                - Breite des Textes
;                  $sText                 - String
; Return ........: Erfolg                 - IAcadMText-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateMText($oBricscadMSpace, $iX, $iY, $iZ, $iWidth, $sText)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $oEnt = $oBricscadMSpace.AddMtext($iX& "," & $iY & "," & $iZ, $iWidth, $sText)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_CreateXLine
; Beschreibung ..: Erstellt eine Konstruktions Linie
; Syntax.........: _BricsCAD_Ent_CreateXLine( $oBricscadMSpace, $iX1, $iY1, $iZ1, $iX2, $iY2, $iZ2 )
; Parameter .....: $oBricscadMSpace       - IAcadModelSpace-Objekt
;                  $iX1                   - X-Koordinate vom Startpunkt
;                  $iY1                   - Y-Koordinate vom Startpunkt
;                  $iZ1                   - Z-Koordinate vom Startpunkt
;                  $iX2                   - X-Koordinate vom Zielpunkt
;                  $iY2                   - Y-Koordinate vom Zielpunkt
;                  $iZ2                   - Z-Koordinate vom Zielpunkt
; Return ........: Erfolg                 - IAcadXLine-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_CreateXLine($oBricscadMSpace, $iX1, $iY1, $iZ1, $iX2, $iY2, $iZ2)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $oEnt = $oBricscadMSpace.AddXLine($iX1 & "," & $iY1 & "," & $iZ1 , $iX2 & "," & $iY2 & "," & $iZ2)
   If Not IsObj($oEnt) Then Return SetError(2)
   Return $oEnt
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_Copy
; Beschreibung ..: Erstellt eine Kopie eines Objektes innerhalb eines Dokuments
; Syntax.........: _BricsCAD_Ent_Copy( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - IAcad...-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_Copy($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.Copy()
   Return true
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_Delete
; Beschreibung ..: Löscht ein Objekt innerhalb eines Dokuments
; Syntax.........: _BricsCAD_Ent_Delete( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_Delete($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.Delete()
   Return true
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetCenter
; Beschreibung ..: Gibt das Zentrum eines Objektes als Array aus
; Syntax.........: _BricsCAD_Ent_GetCenter( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Array
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetCenter($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadCircle" or $sName =  "IAcadEllipse" ) Then Return SetError(1)
   Return $oBricscadEnt.Center
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetClassName
; Beschreibung ..: Gibt den Namen der Objektgruppe als String aus
; Syntax.........: _BricsCAD_Ent_GetClassName( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Name als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetClassName($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.ObjectName
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetColor
; Beschreibung ..: Gibt die Farbe eines Objekts als TrueColor-Objekt aus
; Syntax.........: _BricsCAD_Ent_GetColor( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - TrueColor-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetColor($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.TrueColor
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetEndPoint
; Beschreibung ..: Gibt den Endpunkt eines Objekts als Array aus
; Syntax.........: _BricsCAD_Ent_GetEndPoint( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Endpunkt als Array
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetEndPoint($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadEllipse" or $sName =  "IAcadLine" ) Then Return SetError(1)
   Return $oBricscadEnt.EndPoint
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetHeight
; Beschreibung ..: Gibt die höhe eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetHeight( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Höhe als Float
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetHeight($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadText" or $sName =  "IAcadMText") Then Return SetError(1)
   Return $oBricscadEnt.Height
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetLayer
; Beschreibung ..: Gibt den Layer eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetLayer( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Layer als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetLayer($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.Layer
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetLinetype
; Beschreibung ..: Gibt den Linientyp eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetLinetype( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Linientyp als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetLinetype($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.Linetype
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetLinetype
; Beschreibung ..: Gibt den Linienskalierung eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetLinetype( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Linienskalierung als Float
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetLinetypeScale($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.LinetypeScale
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetLineWeight
; Beschreibung ..: Gibt den Linienstärke eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetLineWeight( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Linienstärke als Float
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetLineWeight($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.LineWeight
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetRadius
; Beschreibung ..: Gibt den Radius eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetRadius( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Radius als Float
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetRadius($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadCircle" ) Then Return SetError(1)
   Return $oBricscadEnt.Radius
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetStartPoint
; Beschreibung ..: Gibt den Startpunkt eines Objektes als Array aus
; Syntax.........: _BricsCAD_Ent_GetStartPoint( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Startpunkt als Array
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetStartPoint($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadEllipse" or $sName =  "IAcadLine" ) Then Return SetError(1)
   Return $oBricscadEnt.StartPoint
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetText
; Beschreibung ..: Gibt den Text eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetText( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Text als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetText($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadText" or $sName = "IAcadMText" or $sName = "IAcadAttribute" or $sName = "IAcadAttributeRef") Then Return SetError(1)
   Return $oBricscadEnt.TextString
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_GetVisible
; Beschreibung ..: Gibt den Sichtbarkeisstatus eines Objektes aus
; Syntax.........: _BricsCAD_Ent_GetVisible( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_GetVisible($oBricscadEnt)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Return $oBricscadEnt.Visible
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_Move
; Beschreibung ..: Verschiebt ein Objektes anhand von zwei Punkten
; Syntax.........: _BricsCAD_Ent_Move( $oBricscadEnt, $iXStart, $iYStart, $iZStart, $iXDest, $iYDest, $iZDest )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iXStart               - X-Koordinate des Startpunktes
;                  $iYStart               - Y-Koordinate des Startpunktes
;                  $iZStart               - Z-Koordinate des Startpunktes
;                  $iXDest                - X-Koordinate des Zielpunktes
;                  $iYDest                - Y-Koordinate des Zielpunktes
;                  $iZDest                - Z-Koordinate des Zielpunktes
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_Move($oBricscadEnt, $iXStart, $iYStart, $iZStart, $iXDest, $iYDest, $iZDest)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.Move( $iXStart & "," & $iYStart & "," & $iZStart, $iXDest & "," & $iYDest & "," & $iZDest)
   Return True
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_Rotate
; Beschreibung ..: Dreht ein Objekt um eine Achse
; Syntax.........: _BricsCAD_Ent_Rotate( $oBricscadEnt, $iXStart, $iYStart, $iZStart, $iXDest, $iYDest, $iZDest, $iRotationAngle )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iXStart               - X-Koordinate des Startpunktes der Achse
;                  $iYStart               - Y-Koordinate des Startpunktes der Achse
;                  $iZStart               - Z-Koordinate des Startpunktes der Achse
;                  $iXDest                - X-Koordinate des Zielpunktes der Achse
;                  $iYDest                - Y-Koordinate des Zielpunktes der Achse
;                  $iZDest                - Z-Koordinate des Zielpunktes der Achse
;                  $iRotationAngle        - Rotation in Grad
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_Rotate($oBricscadEnt, $iXStart, $iYStart, $iZStart, $iXDest, $iYDest, $iZDest, $iRotationAngle)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   Local $DtoG = ACos(-1) / 180
   $oBricscadEnt.Rotate3D( $iXStart & "," & $iYStart & "," & $iZStart, $iXDest & "," & $iYDest & "," & $iZDest, $iRotationAngle * $DtoG)
   Return True
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetColor
; Beschreibung ..: Setzt die Farbe eines Objekts
; Syntax.........: _BricsCAD_Ent_SetColor( $oBricscadEnt, $oColor )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $oColor                - Farbe als TrueColor-Objekt
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetColor($oBricscadEnt, $oColor)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.TrueColor = $oColor
   Return $oBricscadEnt.TrueColor = $oColor
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetEndPoint
; Beschreibung ..: Setzt den Endpunkt eines Objekts
; Syntax.........: _BricsCAD_Ent_SetEndPoint( $oBricscadEnt, $iX, $iY, $iZ )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iX                    - X-Koordinate des Endpunktes
;                  $iY                    - Y-Koordinate des Endpunktes
;                  $iZ                    - Z-Koordinate des Endpunktes
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetEndPoint($oBricscadEnt, $iX, $iY, $iZ)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadEllipse" or $sName =  "IAcadLine" ) Then Return SetError(1)
   $oBricscadEnt.EndPoint = $iX & "," & $iY & "," & $iZ
   Return True
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetHeight
; Beschreibung ..: Setzt die höhe eines Objekts
; Syntax.........: _BricsCAD_Ent_SetHeight( $oBricscadEnt, $iHeight )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iHeight               - höhe als Float
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetHeight($oBricscadEnt, $iHeight)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadText" or $sName =  "IAcadMText") Then Return SetError(1)
   $oBricscadEnt.Height = $iHeight
   Return $oBricscadEnt.Height = $iHeight
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetLayer
; Beschreibung ..: Setzt den Layer eines Objektes
; Syntax.........: _BricsCAD_Ent_SetLayer( $oBricscadEnt, $sLayer )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $sLayer                - Layer als String
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetLayer($oBricscadEnt, $sLayer)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.Layer = $sLayer
   Return $oBricscadEnt.Layer = $sLayer
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetLinetype
; Beschreibung ..: Setzt den Linientyp eines Objektes
; Syntax.........: _BricsCAD_Ent_SetLinetype( $oBricscadEnt, $sLinetype )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $sLinetype             - Linientyp als String
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetLinetype($oBricscadEnt, $sLinetype)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.Linetype = $sLinetype
   Return $oBricscadEnt.Linetype = $sLinetype
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetLinetypeScale
; Beschreibung ..: Setzt den Linientyp-Maßstab eines Objektes
; Syntax.........: _BricsCAD_Ent_SetLinetypeScale( $oBricscadEnt, $iScale )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iScale                - Linientyp-Maßstab als Float
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetLinetypeScale($oBricscadEnt, $iScale)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.LinetypeScale = $iScale
   Return $oBricscadEnt.LinetypeScale = $iScale
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetLineWeight
; Beschreibung ..: Setzt den Linienstärke eines Objektes
; Syntax.........: _BricsCAD_Ent_SetLineWeight( $oBricscadEnt, $iLineWeight )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iLineWeight           - Linientyp-Maßstab als Float
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetLineWeight($oBricscadEnt, $iLineWeight)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   If Not _BricsCAD_Ent_IsEnt($oBricscadEnt) Then Return SetError(1)
   $oBricscadEnt.LineWeight = $iLineWeight
   Return $oBricscadEnt.LineWeight = $iLineWeight
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetRadius
; Beschreibung ..: Setzt den Radius eines Objektes
; Syntax.........: _BricsCAD_Ent_SetRadius( $oBricscadEnt, $iRadius )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iRadius               - Radius als Float
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetRadius($oBricscadEnt, $iRadius)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadCircle" ) Then Return SetError(1)
   $oBricscadEnt.Radius = $iRadius
   Return $oBricscadEnt.Radius = $iRadius
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetStartPoint
; Beschreibung ..: Setzt den Startpunkt eines Objektes
; Syntax.........: _BricsCAD_Ent_SetStartPoint( $oBricscadEnt, $iX, $iY, $iZ )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $iX                    - X-Koordinate des Startpunktes
;                  $iY                    - Y-Koordinate des Startpunktes
;                  $iZ                    - Z-Koordinate des Startpunktes
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetStartPoint($oBricscadEnt, $iX, $iY, $iZ)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadArc" or $sName =  "IAcadEllipse" or $sName =  "IAcadLine" ) Then Return SetError(1)
   $oBricscadEnt.StartPoint = $iX & "," & $iY & "," & $iZ
   Return True
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_SetText
; Beschreibung ..: Setzt den Text eines Objektes
; Syntax.........: _BricsCAD_Ent_SetText( $oBricscadEnt, $sText )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
;                  $sText                 - Text als String
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_SetText($oBricscadEnt, $sText)
   If Not IsObj($oBricscadEnt) Then Return SetError(1)
   Local $sName = ObjName($oBricscadEnt)
   If Not ($sName = "IAcadText" or $sName = "IAcadMText" or $sName = "IAcadAttribute" or $sName = "IAcadAttributeRef") Then Return SetError(1)
   $oBricscadEnt.TextString = $sText
   Return $oBricscadEnt.TextString = $sText
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Ent_List
; Beschreibung ..: Gibt alle Objekte eines Dokuments als Array aus
; Syntax.........: _BricsCAD_Ent_List( $oBricscadEnt )
; Parameter .....: $oBricscadEnt          - IAcad...-Objekt
; Return ........: Erfolg                 - Array
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Ent_List($oBricscadMSpace)
   If Not IsObj($oBricscadMSpace) Then Return SetError(1)
   If ObjName($oBricscadMSpace) <> "IAcadModelSpace" and ObjName($oBricscadMSpace) <> "IAcadPaperSpace" Then Return SetError(1)
   Local $iCount = $oBricscadMSpace.Count
   Local $aEnt[ $iCount ]
   Local $oEnt, $i = 0
   For $oEnt in $oBricscadMSpace
	  If $i >= $iCount Then
		 $iCount += 10
		 ReDim $aEnt[$iCount]
	  EndIf
	  $aEnt[ $i ] = $oEnt
	  $i += 1
   Next
   ReDim $aEnt[$i]
   Return SetExtended($i,$aEnt)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Event
; Beschreibung ..: Ruft Funktionen auf die mit dem angegebenen Präfix beginnen
; Syntax.........: _BricsCAD_Event( $oBricscadApp, $sFunctionprefix = "" )
; Parameter .....: $oBricscadApp          - IAcadApplication-Objekt
;                  $sFunctionprefix       - Präfix der Funktionen, welche aufgerufen werden sollen als String
; Return ........: Erfolg                 - Funktionsname oder Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Event($oBricscadApp, $sFunctionprefix = "")
   If Not IsObj($oBricscadApp) Then Return SetError(1)
   If ObjName($oBricscadApp) <> "IAcadApplication" Then Return SetError(1)
   Return ObjEvent($oBricscadApp,$sFunctionprefix)
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_GetActiveDocument
; Beschreibung ..: Gibt das aktive Dokument aus
; Syntax.........: _BricsCAD_GetActiveDocument( $oBricscadApp )
; Parameter .....: $oBricscadApp          - IAcadApplication-Objekt
; Return ........: Erfolg                 - IAcadDocument-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_GetActiveDocument($oBricscadApp)
   If Not IsObj($oBricscadApp) Then Return SetError(1)
   If ObjName($oBricscadApp) <> "IAcadApplication" Then Return SetError(1)
   If $oBricscadApp.Documents.Count < 1 Then Return False
   Local $oBricscadDocument = $oBricscadApp.ActiveDocument
   Return $oBricscadDocument
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_Create
; Beschreibung ..: Erstellt einen Layer
; Syntax.........: _BricsCAD_Layer_Create( $oBricscadDocument, $sName )
; Parameter .....: $oBricscadDocument     - IAcadDocument-Objekt
; Return ........: Erfolg                 - IAcadLayer-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_Create($oBricscadDocument, $sName)
   If Not IsObj($oBricscadDocument) Then Return SetError(1)
   If ObjName($oBricscadDocument) <> "IAcadDocument" Then Return SetError(1)
   Local $oNewLayer = $oBricscadDocument.Layers.Add($sName)
   Return $oNewLayer
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_Delete
; Beschreibung ..: Löscht einen Layer
; Syntax.........: _BricsCAD_Layer_Delete( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_Delete(ByRef $oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Delete()
   $oBricscadLayer = 0
   Return True
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetColor
; Beschreibung ..: Gibt die Farbe eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetColor( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - TrueColor-Objekt
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetColor($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.TrueColor
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetFreeze
; Beschreibung ..: Gibt den Freezestatus eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetFreeze( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetFreeze($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Freeze
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetLinetype
; Beschreibung ..: Gibt den Linientyp eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetLinetype( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Linientyp als Sting
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetLinetype($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Linetype
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetLineWeight
; Beschreibung ..: Gibt den Linienstärke eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetLineWeight( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Linienstärke als Float
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetLineWeight($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Lineweight
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetLock
; Beschreibung ..: Gibt den Sperrstatus eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetLock( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetLock($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Lock
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetName
; Beschreibung ..: Gibt den Namen eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetName( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Name als String
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetName($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Name
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetPlottable
; Beschreibung ..: Gibt den Plotstatus eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetPlottable( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetPlottable($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.Plottable
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_GetVisible
; Beschreibung ..: Gibt die Sichtbarkeit eines Layers zurück
; Syntax.........: _BricsCAD_Layer_GetVisible( $oBricscadLayer )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_GetVisible($oBricscadLayer)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   Return $oBricscadLayer.LayerOn
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetColor
; Beschreibung ..: Setzt die Farbe eines Layers
; Syntax.........: _BricsCAD_Layer_SetColor( $oBricscadLayer, $oTrueColor )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $oTrueColor            - TrueColor-Objekt
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetColor($oBricscadLayer, $oTrueColor)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.TrueColor = $oTrueColor
   Return $oBricscadLayer.TrueColor = $oTrueColor
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetFreeze
; Beschreibung ..: Setzt den Freezestatus eines Layers
; Syntax.........: _BricsCAD_Layer_SetFreeze( $oBricscadLayer, $bFreezeState )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $bFreezeState          - Boolean
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetFreeze($oBricscadLayer, $bFreezeState)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Freeze = $bFreezeState
   Return $oBricscadLayer.Freeze = $bFreezeState
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetLinetype
; Beschreibung ..: Setzt den Linientyp eines Layers
; Syntax.........: _BricsCAD_Layer_SetLinetype( $oBricscadLayer, $sLinetype )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $sLinetype             - Linientyp als String
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetLinetype($oBricscadLayer, $sLinetype)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Linetype = $sLinetype
   Return $oBricscadLayer.Linetype = $sLinetype
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetLineWeight
; Beschreibung ..: Setzt den Linienstärke eines Layers
; Syntax.........: _BricsCAD_Layer_SetLineWeight( $oBricscadLayer, $iLineweight )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $iLineweight           - Linienstärke als Float
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetLineWeight($oBricscadLayer, $iLineweight)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Lineweight = $iLineweight
   Return $oBricscadLayer.Lineweight = $iLineweight
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetLock
; Beschreibung ..: Setzt den Sperrstatus eines Layers
; Syntax.........: _BricsCAD_Layer_SetLock( $oBricscadLayer, $bLock )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $bLock                 - Boolean
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetLock($oBricscadLayer, $bLock)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Lock = $bLock
   Return $oBricscadLayer.Lock = $bLock
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetName
; Beschreibung ..: Setzt den Namen eines Layers
; Syntax.........: _BricsCAD_Layer_SetName( $oBricscadLayer, $sName )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $sName                 - Name als String
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetName($oBricscadLayer, $sName)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Name = $sName
   Return $oBricscadLayer.Name = $sName
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetPlottable
; Beschreibung ..: Setzt den Plotstatus eines Layers
; Syntax.........: _BricsCAD_Layer_SetPlottable( $oBricscadLayer, $bPlottable )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $bPlottable            - Boolean
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetPlottable($oBricscadLayer, $bPlottable)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.Plottable = $bPlottable
   Return $oBricscadLayer.Plottable = $bPlottable
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Layer_SetVisible
; Beschreibung ..: Setzt die Sichtbarkeit eines Layers
; Syntax.........: _BricsCAD_Layer_SetVisible( $oBricscadLayer, $bVisible )
; Parameter .....: $oBricscadLayer        - IAcadLayer-Objekt
;                  $bVisible              - Boolean
; Return ........: Erfolg                 - Boolean
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Layer_SetVisible($oBricscadLayer, $bVisible)
   If Not IsObj($oBricscadLayer) Then Return SetError(1)
   If ObjName($oBricscadLayer) <> "IAcadLayer" Then Return SetError(1)
   $oBricscadLayer.LayerOn = $bVisible
   Return $oBricscadLayer.LayerOn = $bVisible
EndFunc

; #Funktion# ===========================================================================================================
; Name...........: _BricsCAD_Quit
; Beschreibung ..: Schließt eine Instanz von BricsCAD
; Syntax.........: _BricsCAD_Quit(ByRef $oBricscadApp)
; Parameter .....: $oBricscadApp          - IAcadApplication-Objekt
;                  $bForce                - Boolean, bei True wird das Schließen aller Dokumente erzwungen
; Return ........: Erfolg                 - True
;                  Fehler                 - Setzt @Error
; Autor .........: Zeitriss
; ======================================================================================================================
Func _BricsCAD_Quit(ByRef $oBricscadApp, $bForce = False)
   If Not IsObj($oBricscadApp) Then Return SetError(1)
   If ObjName($oBricscadApp) <> "IAcadApplication" Then Return SetError(1)
   For $oBricscadDocument in $oBricscadApp.Documents
	  _BricsCAD_Document_Close($oBricscadDocument, $bForce)
   Next
   $oBricscadApp.Quit
   $oBricscadApp = 0
   Return True
EndFunc

; ======================================================================================================================

Func _BricsCAD_Ent_IsEnt($oBricscadEnt)
   Local $sName = ObjName($oBricscadEnt)
   Local Const $aObjTyp[] = _
   [ _
   "3DFace", _
   "3DPolyline", _
   "3DSolid", _
   "Arc", _
   "Attribute", _
   "AttributeRef", _
   "BlockRef", _
   "Circle", _
   "Dim3PointAngular", _
   "DimAligned", _
   "DimAngular", _
   "DimArcLength", _
   "DimDiametric", _
   "DimOrdinate", _
   "DimRadial", _
   "DimRadialLarge", _
   "DimRotated", _
   "Ellipse", _
   "ExternalReference", _
   "Hatch", _
   "Leader", _
   "LightweightPolyline", _
   "Line", _
   "MInsertBlock", _
   "MLine", _
   "MText", _
   "Point", _
   "PolyfaceMesh", _
   "PolygonMesh", _
   "Polyline", _
   "PViewport", _
   "Raster", _
   "Ray", _
   "Region", _
   "Shape", _
   "Solid", _
   "Spline", _
   "Table", _
   "Text", _
   "Tolerance", _
   "XLine" _
   ]
   For $i = 0 to UBound($aObjTyp) -1
	  If $sName = "IAcad" & $aObjTyp[$i] Then Return True
   Next
   Return False
EndFunc