Thanks Drummond...
Ok, First you reference to AutoCAD 2000 Type Library or AutoCAD 2004 Type Library. Next:
Option Explicit
Private autocadApp As AcadApplication
Private utilGet As AcadUtility
------------------------------------------------------------------------
Private Sub Form_Load()
Set autocadApp = GetObject(, "Autocad.Application.15")
'If AutoCAD 2004 then
'Set autocadApp = GetObject(, "Autocad.Application.16")
Set utilGet = autocadApp.ActiveDocument.Utility
End Sub
------------------------------------------------------------------------
Private Sub AreaPolyAtr()
Dim AreaPol As String
Dim objsel As AcadLWPolyline
Dim pnt As Variant
Dim enTipo As String
Dim coordenadas As Variant
Dim Atributo As AcadAttribute
Dim I As Integer
Dim xl, yl, zl
Dim xyz As Integer
Dim X, Y
Dim coor
Dim punto(0 To 2) As Double
Dim Bloque As AcadBlock
Dim RefBloque As AcadBlockReference
xl = 0: yl = 0: zl = 0: xyz = 2
On Error Resume Next
Err.Clear
utilGet.GetEntity objsel, pnt, vbCr & "Seleccione Polilínea: "
enTipo = objsel.ObjectName
If enTipo = "AcDbPolyline" Then
coordenadas = objsel.Coordinates
For I = LBound(coordenadas) To UBound(coordenadas)
If (I - (xyz * (Fix(I / xyz)))) = 0 Then
xl = xl + coordenadas(I)
End If
If (I - (xyz * (Fix(I / xyz)))) = 1 Then
yl = yl + coordenadas(I)
End If
If (I - (xyz * (Fix(I / xyz)))) = 2 Then
zl = zl + coordenadas(I)
End If
Next I
AreaPol = "Area: " & Format(objsel.Area, "0.000")
X = xl / ((UBound(coordenadas) + 1) / xyz)
Y = yl / ((UBound(coordenadas) + 1) / xyz)
punto(0) = 0: punto(1) = 0: punto(2) = 0
Set Bloque = acadDoc.Blocks.Add(punto, objsel.Handle)
punto(0) = 0: punto(1) = 0: punto(2) = 0
Set Atributo = Bloque.AddAttribute(4.5, acAttributeModeVerify, "AREA:", punto, "A", AreaPol)
punto(0) = 0: punto(1) = 0: punto(2) = 0
Atributo.Alignment = acAlignmentMiddle
Atributo.TextAlignmentPoint = punto
Set RefBloque = acadDoc.ModelSpace.InsertBlock(punto, objsel.Handle, 1, 1, 1, 0)
punto(0) = X: punto(1) = Y: punto(2) = 0
RefBloque.InsertionPoint = punto
Else
MsgBox "Debe seleccionar una polilinea."
End If
End Sub
------------------------------------------------------------------------
Private Sub CommandButton_Click()
AppActivate autocadApp.Caption
AreaPolyAtr
Me.Show
End Sub
Is All
Un saludo de SpeedCAD...
🙂
CHILE
FORO: http://www.hispacad.com/foro
Mauricio Jorquera