There are many reasons why exploiting tlbinf32.dll is beneficial to me (and why I freaked when I first recognized I could abuse it from lisp). The following represents but one way I'll be using said ability.
In the past when interogating objects I used a combination of atoms-family harvesting and brute force interrogation, the latter which involved compiling and maintaining lists of property and method names for anything non vanilla, like AutoPlant structural etc.
Now it can be done fully dynamically.
Red highlighting was done quickly (read "might have missed one or two") to give you idea of the breadth of this:
====================================Object====================================
<IKs_ComShape 2130572120> (13/27 of <IAcadModelSpace 2130554104>)
==================================Properties==================================
Application <IAcadApplication>
AreaClassName
Color 256
CrossSectionCatalog CISC_W.DBF
CrossSectionName W200X46
CutPlaneCount 0
Database <IAcadDatabase>
DetailCutCount 0
DisplayClassName
Document <IAcadDocument>
EntityName Ks_Shape
EntityType <Null Object, Reference or Value>
FacetCount 0
FamilyClassName
Handle 133
HasExtensionDictionary :vlax-false
HasTrueId 0
Height 203.0
HoleFieldCount 0
Hyperlinks <IAcadHyperlinks>
InsertOffsetX 0.0
InsertOffsetY -101.5
InsertPoint (0.0 12000.0 5000.0) <SafeArray>
IsReferenceManual :vlax-false
IsWeldedIShape :vlax-false
ItemNumber
Layer PS_SHAPE
Length 5000.0
Linetype ByLayer
LinetypeScale 1.0
Lineweight -1
LogicalLinkCount 0
Material 165
Name W200x46
Note1
Note2
ObjectID 2130572120
ObjectName Ks_Shape
OriginPosNumber
OutletCount 0
OwnerID 2130554104
PartOrigin -1
PlotStyleName ByLayer
PolyCutCount 0
PosNumber 1
ShipNumber
SubbodyCount 0
TotalCount 8
TrueColor <IAcadAcCmColor>
Visible :vlax-true
WeightCenter (6.78547e-005 11898.5 2500.0) <SafeArray>
Width 203.0
XAxis (-1.0 0.0 0.0) <SafeArray>
YAxis (0.0 1.0 0.0) <SafeArray>
===================================Methods====================================
AddRef nil RESTRICTED
AddReferenceLine (("StartPoint" variant) ("EndPoint" variant)) NORMAL
AddSlopedEdgeAt (("Point" variant)) NORMAL
ArrayPolar (("NumberOfObjects" INT) ("AngleToFill" REAL) ("C ...
ArrayRectangular (("NumberOfRows" INT) ("NumberOfColumns" INT) ("N ...
ClearReferenceOffset nil NORMAL
ClearReferencePoints nil NORMAL
Copy nil NORMAL
Delete nil NORMAL
DeleteSlopeFlangeSegment (("ThickIndex" INT)) NORMAL
DeleteSlopedEdgeAt (("Point" variant)) NORMAL
Erase nil NORMAL
GetAnalysisIsChanged (("Value" BOOL)) NORMAL
GetAnalysisIsConnected (("Value" BOOL)) NORMAL
GetAnalysisIsProtected (("Value" BOOL)) NORMAL
GetAnalysisLine (("StartPoint" variant) ("EndPoint" variant)) NORMAL
GetAnalysisVectors (("StartVector" variant) ("EndVector" variant)) ...
GetAreaClass (("ClassIndex" INT)) NORMAL
GetBoundingBox (("MinPoint" variant) ("MaxPoint" variant)) NORMAL
GetDirection nil NORMAL
GetDisplayClass (("ClassIndex" INT)) NORMAL
GetEndpointTo (("ReferencePoint" variant)) NORMAL
GetEndsideTo (("ReferencePoint" variant)) NORMAL
GetExtensionDictionary nil NORMAL
GetFamilyClass (("ClassIndex" INT)) NORMAL
GetIDsOfNames (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ...
GetInsertUcs (("vMatrix" variant)) NORMAL
GetLengthAddition nil NORMAL
GetMidLine (("MidLineStart" variant) ("MidLineEnd" variant)) ...
GetMidLineUcs (("vMatrix" variant)) NORMAL
GetReferenceLine (("StartPoint" variant) ("EndPoint" variant)) NOR...
GetReferenceOffset (("Dx" REAL) ("Dy" REAL)) NORMAL
GetReferencePoints (("Point1" variant) ("Point2" variant)) NORMAL
GetSlope nil NORMAL
GetSlopePolygons (("WebPolygon" EMPTY) ("LowerPolygon" EMPTY) ("Up...
GetSlopedHeightAt (("Point" variant) ("StartPoint" variant) ("EndPo...
GetTrueId (("pVal" STR)) NORMAL
GetTypeInfo (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) RE...
GetTypeInfoCount (("pctinfo" UINT)) RESTRICTED
GetVertexAtPoint (("Point" variant) ("Topside" BOOL) ("Vertex" INT)...
GetWeight nil NORMAL
GetWeightLine (("WeightLineStart" variant) ("WeightLineEnd" vari...
GetXData (("AppName" STR) ("XDataType" variant) ("XDataValu...
GetXOrientation nil NORMAL
GetYOrientation nil NORMAL
Highlight (("HighlightFlag" BOOL)) NORMAL
IntersectWith (("IntersectObject" DISPATCH) ("option" EMPTY)) NO...
Invoke (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) (...
Mirror (("Point1" variant) ("Point2" variant)) NORMAL
Mirror3D (("Point1" variant) ("Point2" variant) ("point3" v...
Move (("FromPoint" variant) ("ToPoint" variant)) NORMAL
QueryInterface (("riid" EMPTY) ("ppvObj" VOID)) RESTRICTED
Release nil RESTRICTED
RetrieveGeometry (("Geo" EMPTY)) NORMAL
Rotate (("BasePoint" variant) ("RotationAngle" REAL)) NORMAL
Rotate3D (("Point1" variant) ("Point2" variant) ("RotationA...
ScaleEntity (("BasePoint" variant) ("ScaleFactor" REAL)) NORMAL
SetAnalysisIsChanged (("Value" BOOL)) NORMAL
SetAnalysisIsConnected (("Value" BOOL)) NORMAL
SetAnalysisIsProtected (("Value" BOOL)) NORMAL
SetAnalysisLine (("StartPoint" variant) ("EndPoint" variant)) NORMAL
SetAnalysisVectors (("StartVector" variant) ("EndVector" variant)) NO...
SetAreaClass (("ClassIndex" INT)) NORMAL
SetCrossSection (("Name" STR) ("Catalog" STR)) NORMAL
SetDisplayClass (("ClassIndex" INT)) NORMAL
SetFamilyClass (("ClassIndex" INT)) NORMAL
SetLengthAddition (("LengthAddition" REAL)) NORMAL
SetReferenceOffset (("Dx" REAL) ("Dy" REAL)) NORMAL
SetShapeEnd (("newShapeEnd" variant)) NORMAL
SetShapeMirror nil NORMAL
SetShapeStart (("newShapeStart" variant)) NORMAL
SetSlope (("Slope" REAL)) NORMAL
SetSlopeFlangeSegment (("StartPoint" variant) ("EndPoint" variant) ("Wid...
SetSlopePolygons (("LowerPolygon" EMPTY) ("UpperPolygon" EMPTY)) NO...
SetSlopedHeightAt (("Position" variant) ("PickPoint" variant) ("Hei...
SetTrueId (("newVal" STR)) NORMAL
SetXData (("XDataType" variant) ("XDataValue" variant)) NOR...
TransformBy (("TransformationMatrix" variant)) NORMAL
Update nil NORMAL
===============================DXF Group Codes================================
-1 <Entity name: 7efdf358>
0 KS_SHAPE
330 <Entity name: 7efdacf8>
5 133
100 AcDbEntity
67 0
410 Model
8 PS_SHAPE
We use such property / method sheets to suppliment automation references for third party apps, which have traditionally been ummm, underweight and anemic. Having the ability to interrogate objects like this really helps when developing customization for non vanilla CADD apps.
la la la