Produkt: AutoCAD 2006
Datum: 15.07.2005
Ukázková funkce fixDIVIDE ilustruje použití výběrové množiny AutoCADu ve VBA, použití příkazů bez ActiveX rozhraní (např. Divide, Measure, Explode) a kombinace VBA+LISP. Funkce se dotáže na výběrovou množinu (musí být ve výkresu jedinečná, takže při každém použití původní množinu maže) a poté pro všechny objekty vybrané uživatelem volá příkaz DĚLÚ (_DIVIDE). Protože tento příkaz nemá objektové rozhraní, je vyvoláván funkcí SendCommand. Příkaz očekává zadání objektu jako entity, tedy včetně bodu ukázání. To lze ve VBA nasimulovat předáním entity převedené např. z Handle objektu. K tomu je zde použita LISP funkce (handent).
Funkci lze použít pro rozdělení vybraných objektů na pevný (popř. zadaný) počet úseků (popř. ji upravit na délku úseku náhradou volané funkce na _MEASURE), volitelně s vložením bloku.
Pro přenesení VBA kódu funkce si pomocí Alt-F11 spusťte editor VBA a zkopírujte si tento jednoduchý kód (nebo si otevřete přiložený projekt .DVB):
Sub
fixDIVIDE()Dim
selectionSetAs
AcadSelectionSetDim
entityAs
AcadEntityDim
eHandleAs String
Dim
str1As String
Dim
cmdstrAs String
'To see the divided POINTs
ThisDrawing.SetVariable "PDMODE", 2'Delete the selection set if already exists
For Each
selectionSetIn
ThisDrawing.SelectionSetsIf
selectionSet.Name = "forDIVIDE"Then
selectionSet.DeleteExit For
End If
Next
selectionSet Set selectionSet = ThisDrawing.SelectionSets.Add("forDIVIDE") selectionSet.SelectOnScreenFor Each
entityIn
selectionSet eHandle = entity.Handle str1 = "(handent """ + eHandle + """" + ")" cmdstr = "_DIVIDE "' if you want to DIVIDE using Block "myblock" use this version of cmdstr
' cmdstr = cmdstr & str1 & vbCr & "_blo" & vbCr & "myblock" & vbCr & "_Yes" & vbCr & "10" & vbCr
cmdstr = cmdstr & str1 & vbCr & "10" & vbCr ThisDrawing.SendCommand (cmdstr)Next
MsgBox ("Selected objects were DIVIDEd.")End Sub
Nyní již jen musíme vyvolat nově vytvořenou funkci. Ve spuštěném AutoCADu stiskněte Alt-F8 a v seznamu maker zvolte fixDIVIDE. Pro automatické spuštění lze využít např. příkaz APLČTI (_APPLOAD) a příkaz -VBARUN.
Copyright © 2005 CAD Studio a.s.