Nástroj pro rychlé zjištění informací o entitě

Kategorie » téma: AutoCAD | AutoCAD Architecture | LISP

26.07.2010 08.15 | Jan Panoch | Komentáře: 0 komentářů | Přečteno: 20811x

Potřebujeme-li v AutoCADu nebo jiných produktech na něm založených zjistit základní informace o nějaké entitě ve výkresu, používáme obyčejně paletu Properties. Existuje ale ještě další způsob, který sice není tak komfortní, ale na druhou stranu jím můžeme zjistit i informace, které se v této paletě nevyskytují a ke kterým bychom se doslali až pomocí jiných příkazů.

Do vlastní Tool Palety si z aplikace Content Browser přeneseme Command Tool. V AutoCADu Architecture se nachází v Stock Tool Catalog / Helper Tools
 
Po umístění na paletu si na nástroj klepneme pravým tlačítkem myši a z kontextové nabídky vybereme Properties. Řádky Layer Key a Layer overrides necháme bez povšimnutí, ale klepneme do řádky Command. Tam umístíme následující LISPovskou sekvenci:

(vl-load-com)(vlax-dump-object (vlax-ename->vla-object (car (entsel "Vyberte objekt: "))))

Nástroj si také pojmenujeme (zde je použito jméno EntitiInfo) a k nástroji dále můžeme přidat nějaký obrázek jako ikonu.
 

(vl-load-com) načte rozšíření VisualLispu do AutoLISPu .

Zbytek sekvence vyzve k vybrání entity v okně AutoCADu, převede ji na VLA objekt a vypíše její vlastnosti do příkazové řádky.

Nyní můžeme zavřít Command Tool a odzkoušet jeho funkčnost. Po klepnutí na nástroj jsme vyzváni k výběru objektu. Po jeho vybrání se zdánlivě nic nestane, dokud si neotevřeme klávesou F2 příkazovou řádku.

Takto například vypadá příkazová řádka po vybrání úsečky Vyberte objekt: ; IAcadLine2: AutoCAD Line Interface
; Property values:
;   Angle (RO) = 0.523599
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140702e28>
;   Delta (RO) = (4395.08 2537.5 0.0)
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000026dbc640>
;   EndPoint = (29210.3 12669.3 0.0)
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "2CB8"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000003a5424c8>
;   Layer = "0"
;   Length (RO) = 5075.01
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 46
;   ObjectID32 (RO) = 46
;   ObjectName (RO) = "AcDbLine"
;   OwnerID (RO) = 45
;   OwnerID32 (RO) = 45
;   PlotStyleName = "ByLayer"
;   StartPoint = (24815.2 10131.8 0.0)
;   Thickness = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003a544020>
;   Visible = -1
T
Zajímavé může být vybrání regionu. V příkazové řádce se navíc od palety Properties vyskytují i průřezové charakteristiky regionu

MomentOfInertia - moment setrvačnosti ( k počátku UCS)

Products of inertia - Deviační moment

Radii of gyration - poloměr setrvačnosti (k počátku UCS)

Principal moments - Hlavní momenty

K těmto hodnotám bychom se jinak dostali příkazem MASSPROP a to v přehlednějším tvaru.

Vyberte objekt: ; IAcadRegion2: AutoCAD Region Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140702e28>
;   Area (RO) = 3.40674e+006
;   Centroid (RO) = (31112.1 10978.5)
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000026dbc640>
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "2CBB"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000003a5429a8>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   MomentOfInertia (RO) = (4.11619e+014 3.29872e+015)
;   Normal (RO) = (0.0 0.0 1.0)
;   ObjectID (RO) = 47
;   ObjectID32 (RO) = 47
;   ObjectName (RO) = "AcDbRegion"
;   OwnerID (RO) = 45
;   OwnerID32 (RO) = 45
;   Perimeter (RO) = 7443.8
;   PlotStyleName = "ByLayer"
;   PrincipalDirections (RO) = (0.743531 0.668701 -0.668701 0.743531)
;   PrincipalMoments (RO) = (5.6479e+011 1.57603e+012)
;   ProductOfInertia (RO) = 1.16311e+015
;   RadiiOfGyration (RO) = (10992.0 31117.4)
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003a542400>
;   Visible = -1
T

Takto vypadá ochuzený výpis vlastností regionu v paletě Properties.
 
Stejně je tomu při výběru tělesa vytvořeného vysunutím jeho půdorysného tvaru.

Vyberte objekt: ; IAcad3DSolid2: AutoCAD 3dSolid
Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140702e28>
;   Centroid (RO) = (22130.8 12162.8 250.0)
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000026dbc640>
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "2CC6"
;   HasExtensionDictionary (RO) = 0
;   History = -1
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000003de13be8>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   MomentOfInertia (RO) = (8.74483e+016 2.8928e+017 3.7663e+017)
;   ObjectID (RO) = 56
;   ObjectID32 (RO) = 56
;   ObjectName (RO) = "AcDb3dSolid"
;   OwnerID (RO) = 45
;   OwnerID32 (RO) = 45
;   PlotStyleName = "ByLayer"
;   Position = Došlo k výjimce
;   PrincipalDirections (RO) = (1.0 0.0 0.0 0.0 1.0 0.0 ... )
;   PrincipalMoments (RO) = (6.77824e+013 6.77824e+013 1.10964e+014)
;   ProductOfInertia (RO) = (1.58926e+017 1.79531e+015 3.26665e+015)
;   RadiiOfGyration (RO) = (12170.1 22134.8 25256.6)
;   ShowHistory = 0
;   SolidType (RO) = "Extrusion"
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003dc9fb20>
;   Visible = -1
;   Volume (RO) = 5.90426e+008

Také při u výběru entity typu schodiště v AutoCADu Architecture se v příkazové řádce zobrazí vlastnosti, které z dialogu Properties nevydolujeme.

Vyberte objekt:
; IAecStair: Stair entity used for vertical circulation across floors of a
building.
; Property values:
;   AddTreadDepthBottom = 0
;   AddTreadDepthTop = 0
;   AlignmentOffset = Došlo k výjimce
;   AlignmentType = Došlo k výjimce
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140702e28>
;   ArcAngle = Došlo k výjimce
;   ArcConstraint = Došlo k výjimce
;   BottomDepth = 250.0
;   BottomOffset = 0.0
;   BoundSpaces = 1
;   Description = ""
;   DisplayRiser = 0
;   DisplayTread = 0
;   Document (RO) = #<VLA-OBJECT IAcadDocument 000000003a56abd0>
;   ExtendAlignment = Došlo k výjimce
;   Handle (RO) = "1CF5"
;   HasExtensionDictionary (RO) = -1
;   HeadroomHeight = 2100.0
;   Height = 1950.0
;   HorizontalOrientation = Došlo k výjimce
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000003a546908>
;   InsideClearance = 0.0
;   Justify = 0
;   JustifyCircular = 0
;   LandingExtensionBottom = 0.0
;   LandingExtensionTop = 150.0
;   Layer = "A-Stair-G"
;   LeftSideClearance = 0.0
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Location = (10875.0 12090.0 2380.0)
;   Material = "ByLayer"
;   MaximumHeight = 3000.0
;   MaximumLimitType = 0
;   MaximumRisers = 15
;   MinimumHeight = 540.0
;   MinimumLimitType = 0
;   MinimumRisers = 3
;   Normal = (0.0 0.0 1.0)
;   Nosing = 0.0
;   ObjectID (RO) = 49
;   ObjectID32 (RO) = 49
;   ObjectName (RO) = "AecDbStair"
;   OutsideClearance = 0.0
;   OwnerID (RO) = 50
;   OwnerID32 (RO) = 50
;   PlotStyleName = "ByLayer"
;   Radius = Došlo k výjimce
;   RightSideClearance = 0.0
;   Riser = 162.5
;   RiseRatio = 0.58209
;   RiserCount = 12
;   RiserDepth = 0.0
;   Rotation = 3.14159
;   ShadowDisplay = 0
;   StairShape = 3
;   StraightLength = 3070.83
;   Style = #<VLA-OBJECT IAecStairStyle 000000003547bf40>
;   StyleName = "Betonové"
;   TerminateWith = 0
;   TopDepth = 250.0
;   TopOffset = 0.0
;   Tread = 279.167
;   TreadDepth = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003a546ba0>
;   TurnType = 2
;   UnevenTreadOn = Došlo k výjimce
;   Use = 6
;   VerticalOrientation = 1
;   Visible = -1
;   Width = 1300.0
;   WinderStyle = #<VLA-OBJECT IAecStairWinderStyle 000000003547bc80>
;   WinderStyleName = "Balanced"
T

Pokud sekvenci v příkazu mírně pozměníme tak, že před poslední ukončující závorku dopíšeme T. Budou se za vlastnostmi zobrazovat dále metody, které lze na vybranou entitu uplatnit (Methods Supported)
Příkaz pak bude vypadat následovně:

(vl-load-com)(vlax-dump-object (vlax-ename->vla-object (car (entsel "Vyberte objekt: ")))T)

Vpravo je výpis vlastností a podporovaných metod pro oblouk.

Vlastnosti se mohou lišit podle verze AutoCADu.

Vyberte objekt: ; IAcadArc2: AutoCAD Arc Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140702e28>
;   ArcLength (RO) = 2123.75
;   Area (RO) = 631521.0
;   Center = (23844.6 13529.5 0.0)
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000000026dbc640>
;   EndAngle = 3.2707
;   EndPoint (RO) = (22839.1 13398.9 0.0)
;   EntityTransparency = "ByLayer"
;   Handle (RO) = "2CC5"
;   HasExtensionDictionary (RO) = 0
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000000002c343208>
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 55
;   ObjectID32 (RO) = 55
;   ObjectName (RO) = "AcDbArc"
;   OwnerID (RO) = 45
;   OwnerID32 (RO) = 45
;   PlotStyleName = "ByLayer"
;   Radius = 1014.01
;   StartAngle = 1.1763
;   StartPoint (RO) = (24234.4 14465.6 0.0)
;   Thickness = 0.0
;   TotalAngle (RO) = 2.0944
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 000000003de12a80>
;   Visible = -1
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   Copy ()
;   Delete ()
;   GetBoundingBox (2)
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   Offset (1)
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()
T

Jan Panoch

 Související články:

1) "Nástroj pro rychlé zjištění informací o entitě", Jan Panoch, 26.7.2010

2) "Přístup k objektům pomocí VisualLISPu", Jan Panoch, 2.8.2010

3) "Přístup k vlastnostem objektům pomocí VisualLISPu", Jan Panoch, 23.8.2010

4) "Zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

5) "Opakované zapsání textu pod kótovací čáru pomocí VisualLISPu", Jan Panoch, 23.8.2010

6) "OpenDCL", Jan Panoch, 3.9.2010

7) "Příklad vytvoření dialogu v OpenDCL Studiu", Jan Panoch, 6.9.2010

8) "Obslužný kód pro ovládací prvky OpenDCL", Jan Panoch, 13.9.2010

9) "Spojení lsp funkce a odcl dialogu v jeden soubor", Jan Panoch, 13.9.2010

10) "Co je třeba k běhu funkcí s ODCL dialogy", Jan Panoch, 13.9.2010

11) "Funkce na výpočet průřezových charakteristik s ODCL paletou", Jan Panoch, 13.9.2010

(odkazy se svolením autora článků doplnil JT)

 

Komentáře:

Tento článek zatím neobsahuje žádné komentáře.

Přidat komentář

 *
 *
 
 *

*) Povinné položky jsou označeny hvězdičkou.