from ..Base import *
from ..Proxy import *
from ..AcadObject import *
from ..Objects import *
from ..AcadEntity import *
from ..Entities import *

class IAcadBlock(IAcadObjectCollection):
    def __init__(self, obj) -> None: ...
    def Add3DFace(self, Point1: PyGePoint3d, Point2: PyGePoint3d, Point3: PyGePoint3d, Point4: PyGePoint3d = None) -> Acad3DFace: ...
    def Add3DMesh(self, M: int, N: int, PointsMatrix: vDoubleArray) -> AcadPolygonMesh: ...
    def Add3DPoly(self, PointsArray: PyGePoint3dArray) -> Acad3DPolyline: ...
    def AddArc(self, Center: PyGePoint3d, Radius: float, StartAngle: float, EndAngle: float) -> AcadArc: ...
    def AddAttribute(self, Height: float, Mode: AcAttributeMode, Prompt: str, InsertionPoint: PyGePoint3d, Tag: str, Value: str) -> AcadAttribute: ...
    def AddBox(self, Origin: PyGePoint3d, Length: float, Width: float, Height: float) -> Acad3DSolid: ...
    def AddCircle(self, Center: PyGePoint3d, Radius: float) -> AcadCircle: ...
    def AddCone(self, Center: PyGePoint3d, BaseRadius: float, Height: float) -> Acad3DSolid: ...
    def AddCustomObject(self, ClassName: str) -> AcadObject: ...
    def AddCylinder(self, Center: PyGePoint3d, Radius: float, Height: float) -> Acad3DSolid: ...
    def AddDim3PointAngular(self, AngleVertex: PyGePoint3d, FirstEndPoint: PyGePoint3d, SecondEndPoint: PyGePoint3d, TextPoint: PyGePoint3d) -> AcadDim3PointAngular: ...
    def AddDimAligned(self, ExtLine1Point: PyGePoint3d, ExtLine2Point: PyGePoint3d, TextPosition: PyGePoint3d) -> AcadDimAligned: ...
    def AddDimArc(self, ArcCenter: PyGePoint3d, FirstEndPoint: PyGePoint3d, SecondEndPoint: PyGePoint3d, ArcPoint: PyGePoint3d) -> AcadDimArcLength: ...
    def AddDimDiametric(self, ChordPoint: PyGePoint3d, FarChordPoint: PyGePoint3d, LeaderLength: float) -> AcadDimDiametric: ...
    def AddDimOrdinate(self, DefinitionPoint: PyGePoint3d, LeaderEndPoint: PyGePoint3d, UseXAxis: bool) -> AcadDimOrdinate: ...
    def AddDimRadial(self, Center: PyGePoint3d, ChordPoint: PyGePoint3d, LeaderLength: float) -> AcadDimRadial: ...
    def AddDimRadialLarge(self, Center: PyGePoint3d, ChordPoint: PyGePoint3d, OverrideCenter: PyGePoint3d, JogPoint: PyGePoint3d, JogAngle: float) -> AcadDimRadialLarge: ...
    def AddDimRotated(self, XLine1Point: PyGePoint3d, XLine2Point: PyGePoint3d, DimLineLocation: PyGePoint3d, RotationAngle: float) -> AcadDimRotated: ...
    def AddEllipse(self, Center: PyGePoint3d, MajorAxis: PyGeVector3d, RadiusRatio: float) -> AcadEllipse: ...
    def AddEllipticalCone(self, Center: PyGePoint3d, MajorRadius: float, MinorRadius: float, Height: float) -> Acad3DSolid: ...
    def AddEllipticalCylinder(self, Center: PyGePoint3d, MajorRadius: float, MinorRadius: float, Height: float) -> Acad3DSolid: ...
    def AddExtrudedSolid(self, Profile: AcadRegion, Height: float, TaperAngle: float) -> Acad3DSolid: ...
    def AddExtrudedSolidAlongPath(self, Profile: AcadRegion, Path: AcadArc | AcadCircle | AcadEllipse | AcadPolyline | AcadSpline) -> Acad3DSolid: ...
    def AddHatch(self, PatternType: AcPatternType | AcGradientPatternType, PatternName: str, Associativity: bool, HatchObjectType: AcHatchObjectType = None) -> AcadHatch: ...
    def AddLeader(self, PointsArray: PyGePoint3d, Annotation: AcadBlockReference | AcadMtext | AcadTolerance, Type: AcLeaderType) -> AcadLeader: ...
    def AddLightWeightPolyline(self, VerticesList: PyGePoint2dArray) -> AcadLWPolyline: ...
    def AddLine(self, StartPoint: PyGePoint3d, EndPoint: PyGePoint3d) -> AcadLine: ...
    def AddMInsertBlock(self, InsertionPoint: PyGePoint3d, Name: str, XScale: float, YScale: float, ZScale: float, Rotation: float, NumRows: int, NumColumns: int, RowSpacing: float, ColumnSpacing: float, Password: Variant = ...) -> AcadMInsertBlock: ...
    def AddMLeader(self, pointsArray: PyGePoint3dArray) -> AcadMLeader: ...
    def AddMLine(self, VertexList: PyGePoint3dArray) -> AcadMLine: ...
    def AddMText(self, InsertionPoint: PyGePoint3d, Width: float, Text: str) -> AcadMtext: ...
    def AddPoint(self, Point: PyGePoint3d) -> AcadPoint: ...
    def AddPolyfaceMesh(self, VerticesList: PyGePoint3dArray, FaceList: vShortArray) -> AcadPolyfaceMesh: ...
    def AddPolyline(self, VerticesList: PyGePoint3dArray) -> AcadPolyline: ...
    def AddRaster(self, ImageFileName: str, InsertionPoint: PyGePoint3d, ScaleFactor: float, RotationAngle: float) -> AcadRasterImage: ...
    def AddRay(self, Point1: PyGePoint3d, Point2: PyGePoint3d) -> AcadRay: ...
    def AddRegion(self, ObjectList: vObjectArray[AcadArc | AcadCircle | AcadEllipse | AcadLine | AcadLWPolyline | AcadSpline]) -> vObjectArray[AcadRegion]: ...
    def AddRevolvedSolid(self, Profile: AcadRegion, AxisPoint: PyGePoint3d, AxisDir: PyGeVector3d, Angle: float) -> Acad3DSolid: ...
    def AddSection(self, FromPoint: PyGePoint3d, ToPoint: PyGePoint3d, planeVector: PyGeVector3d) -> AcadSection: ...
    def AddShape(self, Name: str, InsertionPoint: PyGePoint3d, ScaleFactor: float, Rotation: float) -> AcadShape: ...
    def AddSolid(self, Point1: PyGePoint3d, Point2: PyGePoint3d, Point3: PyGePoint3d, Point4: PyGePoint3d) -> AcadSolid: ...
    def AddSphere(self, Center: PyGePoint3d, Radius: float) -> Acad3DSolid: ...
    def AddSpline(self, PointsArray: PyGePoint3dArray, StartTangent: PyGeVector3d, EndTangent: PyGeVector3d) -> AcadSpline: ...
    def AddTable(self, InsertionPoint: PyGePoint3d, NumRows: int, NumColumns: int, RowHeight: float, ColWidth: float) -> AcadTable: ...
    def AddText(self, TextString: str, InsertionPoint: PyGePoint3d, Height: float) -> AcadText: ...
    def AddTolerance(self, Text: str, InsertionPoint: PyGePoint3d, Direction: PyGeVector3d) -> AcadTolerance: ...
    def AddTorus(self, Center: PyGePoint3d, TorusRadius: float, TubeRadius: float) -> Acad3DSolid: ...
    def AddTrace(self, PointsArray: PyGePoint3dArray) -> AcadTrace: ...
    def AddWedge(self, Center: PyGePoint3d, Length: float, Width: float, Height: float) -> Acad3DSolid: ...
    def AddXline(self, Point1: PyGePoint3d, Point2: PyGePoint3d) -> AcadXline: ...
    def AttachExternalReference(self, PathName: str, Name: str, InsertionPoint: PyGePoint3d, XScale: float, YScale: float, ZScale: float, Rotation: float, Overlay: bool, Password: Variant = ...) -> AcadExternalReference: ...
    def InsertBlock(self, InsertionPoint: PyGePoint3d, Name: str, Xscale: float = 1.0, Yscale: float = 1.0, ZScale: float = 1.0, Rotation: float = 0.0, Password: Variant = ...) -> AcadBlockReference: ...

class AcadBlock(IAcadBlock):
    def __init__(self, obj) -> None: ...
    BlockScaling: AcBlockScaling
    Comments: str
    Explodable: bool
    IsDynamicBlock: bool
    IsLayout: bool
    IsXRef: bool
    Layout: AcadLayout
    Material: str
    Name: str
    Origin: PyGePoint3d
    Path: str
    Units: AcInsertUnits
    XRefDatabase: AcadDatabase
    def Bind(self, bPrefixName: bool) -> None: ...
    def Delete(self) -> None: ...
    def Detach(self) -> None: ...
    def Reload(self) -> None: ...
    def Unload(self) -> None: ...
