Produkt: AutoCAD 2002/2004
Datum: 19.09.2003
Ukázková funkce MassPropD ilustruje použití filtrovaných výběrových množin AutoCADu ve VBA a práci s vlastnostmi entit zahrnutých do výběrové množiny. Funkce vypisuje objem a hmotnost vybraných 3D těles (3DSOLID) s respektováním zadané hustoty materiálu (implicitně AutoCAD počítá jen s hustotou 1).
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
MassPropD()Dim
oSSAs
AcadSelectionSetDim
iFilterCode(0)As
IntegerDim
vFilterValue(0)As
Variant'Errorhandler (vymaže případně již existující výběrovou množinu)
On Error Resume Next
Application.ActiveDocument.SelectionSets("3Dss").DeleteOn Error GoTo 0
TotalVolume = 0'vytvoř výběrovou množinu nazvanou "3Dss"
Set
oSS = Application.ActiveDocument.SelectionSets.Add("3Dss"
) iFilterCode(0) = 0: vFilterValue(0) ="3dsolid"
'odfiltrovat vše kromě entit typu "3dsolid"
oSS.SelectOnScreen iFilterCode, vFilterValueFor Each
entIn
oSS'zpracovat všechny entity výběrové množiny "3Dss"
TotalVolume = TotalVolume + ent.VolumeNext
ent Density = InputBox("Zadejte hustotu materiálu: "
) Mass = Density * TotalVolume MsgBox"Celkový objem vybraných těles: "
& TotalVolume & vbCrLf & _"Celková hmotnost vybraných těles: "
& Mass'xxx = InputBox("Celková hmotnost vybraných těles: ", , Mass) 'tato verze umožní Copy/Paste výsledku
oSS.DeleteEnd Sub
Místo dialogového okna výpisu výsledků (MsgBox) lze použít funkci InputBox nebo uživatelský formulář, které umožní zkopírovat výsledek pomocí Copy/Paste. Přidáním dalších výpočtů lze doplnit momenty setrvačnosti či další parametry.
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 MassPropD.
Copyright © 2003 CAD Studio