感谢您的回复。这正是我在为管道(3d点列表)使用(vlax get属性“startpoint”)时所期望的结果。然而,出于某种原因,当在管道对象上使用时,它不是返回一个列表(这太棒了,因为我可以使用car/cdr函数),而是返回一个VLA对象名。尝试使用(vlax dump object)访问此对象名称时返回错误。我想以某种方式访问它作为一个列表,但不知道从这里去哪里。这可能只是因为它是一个Civil 3D对象吗?同样,我的代码在2008年运行良好,但显然这个“startpoint”对象不再具有“x”和“y”属性。在管道上使用vlax安全数组代码[(vlax safearray->list(vlax variant value(vla get startpoint Obj))])]返回此错误
[;错误:错误的参数类型:variantp#]但是,它返回了常规autocad圆弧的点列表。我很困惑。以下是我在管道上倾倒垃圾的结果:
-
- Command: (vlax-dump-object obj t)
- ; IAeccPipe: Pipe interface
- ; Property values:
- ; Alignment = nil
- ; Application (RO) = #<VLA-OBJECT IAeccApplication 18021a90>
- ; ClosestPointTo (RO) = ...Indexed contents not shown...
- ; Connectors (RO) = #<VLA-OBJECT IAeccConnectors 18021e50>
- ; Description = "300 mm Concrete"
- ; DisplayName (RO) = "Pipe - (265)"
- ; Document (RO) = #<VLA-OBJECT IAeccDocument 185ec5e0>
- ; EGLDown = 0.0
- ; EGLUp = 0.0
- ; EndPoint (RO) = #<VLA-OBJECT 185ec540>
- ; EndStructure (RO) = #<VLA-OBJECT IAeccStructure 28b2c440>
- ; FlowDirection (RO) = 1
- ; FlowDirectionMethod = 1
- ; Handle (RO) = "7ACC8"
- ; HasExtensionDictionary (RO) = 0
- ; HGLDown = 0.0
- ; HGLUp = 0.0
- ; HoldOnResize = 0
- ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 296c117c>
- ; InnerDiameterOrWidth (RO) = 0.3
- ; InnerHeight (RO) = 0.3
- ; IsMaxCoverViolated (RO) = ...Indexed contents not shown...
- ; IsMinCoverViolated (RO) = ...Indexed contents not shown...
- ; Labels (RO) = #<VLA-OBJECT IAeccPipeLabels 18a97600>
- ; Layer = "N-STM"
- ; Length2D (RO) = 57.8195
- ; Length3D (RO) = 57.8918
- ; Linetype = "ByLayer"
- ; LinetypeScale = 1.0
- ; Lineweight = -1
- ; Material = "ByLayer"
- ; MaximumCover (RO) = 0.0
- ; MinimumCover (RO) = 0.0
- ; Name = "Pipe - (265)"
- ; ObjectID (RO) = 2129999104
- ; ObjectName (RO) = "AeccDbPipe"
- ; OuterDiameterOrWidth (RO) = 0.44
- ; OuterHeight (RO) = 0.44
- ; OwnerID (RO) = 2129857784
- ; ParamsBool (RO) = #<VLA-OBJECT 185ec760>
- ; ParamsDouble (RO) = #<VLA-OBJECT 185ec4c0>
- ; ParamsLong (RO) = #<VLA-OBJECT 185ec280>
- ; ParamsString (RO) = #<VLA-OBJECT 185ec020>
- ; PartDataRecord = #<VLA-OBJECT IAeccPartDataRecord 18025138>
- ; PartFamily (RO) = #<VLA-OBJECT IAeccPartFamily 182ba398>
- ; PartSizeName (RO) = "300 mm Concrete Pipe"
- ; PartType (RO) = 10
- ; PlotStyleName = "ByLayer"
- ; PointAtParam (RO) = ...Indexed contents not shown...
- ; Position (RO) = #<VLA-OBJECT IAeccPoint3d 185ec7e0>
- ; ProfileNetworkParts (RO) = #<VLA-OBJECT IAeccGraphProfileNetworkParts
- ;18a94a50>
- ; Radius (RO) = 0.0
- ; ShowToolTip = -1
- ; Slope (RO) = -0.05
- ; StartPoint (RO) = #<VLA-OBJECT 185ec520>
- ; StartStructure (RO) = #<VLA-OBJECT IAeccStructure 28b2c640>
- ; STMPipeMetadata = unsupported result type: 65
- ; Style = #<VLA-OBJECT IAeccPipeStyle 182ba3e8>
- ; SubEntityType (RO) = 0
- ; Surface = nil
- ; SweptShape (RO) = 2
- ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 18a97a20>
- ; Visible = -1
- ; WallThickness (RO) = 0.07
- ; Methods supported:
- ; ArrayPolar (3)
- ; ArrayRectangular (6)
- ; ConnectToPipe (3)
- ; ConnectToStructure (2)
- ; Copy ()
- ; Delete ()
- ; Disconnect (1)
- ; GetBoundingBox (2)
- ; GetExtensionDictionary ()
- ; GetXData (3)
- ; Highlight (1)
- ; IntersectWith (2)
- ; IsReferenceObject ()
- ; IsReferenceStale ()
- ; IsReferenceSubObject ()
- ; IsReferenceValid ()
- ; Mirror (2)
- ; Mirror3D (3)
- ; Move (2)
- ; Project2dPointVertically (1)
- ; ResizeByInnerDiaOrWidth (3)
- ; Rotate (2)
- ; Rotate3D (3)
- ; ScaleEntity (2)
- ; SetStartAndEndPoints (2)
- ; SetXData (2)
- ; SwapPartFamilyAndSize (2)
- ; TransformBy (1)
- ; Update ()
它说startpoint属性是另一个VLA对象,但我不知道从那里去哪里,因为它不支持对象转储本身。 |