Ich habe ein 3D-Modell eines komplizierten Schornsteins, der im Wesentlichen eine zylindrische Röhre mit dekorativen Merkmalen ist. Ich würde gerne ein VBA-Skript schreiben, das die Schnitteigenschaften an mehreren Punkten entlang seiner Länge findet, aber ich bin mir nicht sicher, wie es gemacht wird.AutoCAD VBA: Auswählen von Objekten
Von Online-Suchen, ich habe es geschafft, einen Code zu schreiben, der in einem Abschnitt an einem Punkt setzt, auf dem ich dann MASSPROP ausführen kann, aber ich bin nicht ganz sicher, wie man es beendet ... Ich denke, ich ' m nur eine Codezeile entfernt. Ich muss nur den Abschnitt auswählen, den ich gerade erstellt habe.
Mein fast vollständiger Code ist unten mit einem Kommentar zu der Zeile, die ich brauche mit Hilfe.
Public Sub Section()
Dim SolidObject As Acad3DSolid
Dim NewRegionObject As AcadRegion
Dim PlaneOrigin As Variant
Dim PlaneXaxisPoint As Variant
Dim PlaneYaxisPoint As Variant
Dim PickedPoint As Variant
On Error Resume Next
With ThisDrawing.Utility
.GetEntity SolidObject, PickedPoint, vbCr & "Select solid to cut."
If Err Then
MsgBox "Selected solid must be a 3DSolid"
Exit Sub
End If
PlaneOrigin = .GetPoint(PickedPoint, vbCr & "Select point to define origin.")
PlaneXaxisPoint = .GetPoint(PickedPoint, vbCr & "Select point to define x-axis.")
PlaneYaxisPoint = .GetPoint(PickedPoint, vbCr & "Select point to define y-axis.")
Set NewRegionObject = SolidObject.SectionSolid(PlaneOrigin, PlaneXaxisPoint, PlaneYaxisPoint)
End With
ThisDrawing.SendCommand ("qaflags" & vbCr & "2" & vbCr) 'This is needed for the operation
ThisDrawing.SendCommand ("massprop" & vbCr)
'How do I select my NewRegionObject???
ThisDrawing.SendCommand (vbCr & vbCr & "y" & vbCr & vbCr & "y" & vbCr)
End Sub
Wenn ich diesen Code bekommen MASSEIG mit meinem neu erstellten Abschnitt gut laufen soll ich in der Lage sein, es zu adaptieren entlang des Schornsteins den Prozess automatisch an mehreren Stellen zu tun, so denke ich, ich bin nur eine Zeile Code aus.
Danke für Ihre Hilfe, Tom
Sie wirklich Ihren Code einrücken werden sollte. 'Sub ... End Sub' ist ein Block. 'With ... End With' ist ein anderes - nicht nur' If ... End If'! –
Hoffentlich hilft die [API] (http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-DFE47717-F7AF-443B-AD78-4E0BB60121C7) Ihnen, aber Sie bekommen nicht ein Objekt, das von .sendCommand zurückgegeben wird, also entweder versuchen, es mit einer Funktion neu zu schreiben, die das Region-Objekt mit beliebigen Mitteln findet oder "findet". –