找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4253|回复: 16

[研讨] xdrx_getpropertyvalue 这个函数很强啊

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-11 08:38:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
命令: (xdrx_getpropertyvalue)

AcDbEntity
  ├─AcDb3dSolid
  ├─AcDbBlockReference
    ├─AcDbAttribute
    ├─AcDbAttributeDefinition
  ├─AcDbCurve
    ├─AcDb2dPolyline
    ├─AcDb3dPolyline
    ├─AcDbLine
    ├─AcDbPolyline
    ├─AcDbCircle
    ├─AcDbArc
    ├─AcDbEllipse
  ├─AcDbDimension
    ├─AcDbAlignedDimension
    ├─AcDbRotatedDimension
    ├─AcDb2LineAngularDimension
    ├─AcDb3PointAngularDimension
    ├─AcDbArcDimension
    ├─AcDbDiametricDimension
    ├─AcDbOrdinateDimension
    ├─AcDbRadialDimension
    ├─AcDbRadialDimensionLarge
  ├─AcDbHatch
  ├─AcDbRegion
  ├─AcDbText
  ├─AcDbTrace
  └─AcDbSolid
nil

命令: (xdrx_getpropertyvalue (entlast))

Class AcDbHatch:

  ├─Area
  ├─Length
  ├─AssocObjIds
  ├─ShadeTintValue
  ├─GradientShift
  ├─GradientAngle
  ├─GradientName
  ├─GradientType
  ├─HatchObjectType
  ├─IsGradient
  ├─IsHatch
  ├─IsSolidFill
  ├─Elevation
  ├─HatchStyle
  ├─Normal
  ├─NumPatternDefinitions
  ├─PatternAngle
  ├─PatternScale
  ├─PatternSpace
  ├─PatternName
  ├─PatternDouble
  ├─PatternType
  ├─NumHatchLines
  ├─NumLoops
  ├─PatternScale
  ├─PatternSpace
  ├─PatternName
  ├─LineGenerationEnabled
  ├─OriginPoint

Class AcDbEntity:

  ├─BoundingBox
  ├─Color
  ├─ECS
  ├─Layer
  ├─Linetype
  ├─LinetypeScale
  ├─LineWeight
  ├─PlotStyleName
  ├─Visibility

  1. (xdrx_getpropertyvalue (entlast) "color")
  2. 150



  1. (xdrx_getpropertyvalue (entlast) "boundingbox")
  2. ((1249.62 677.318 0.0) (1262.1 699.251 0.0))


  1. (xdrx_getpropertyvalue (entlast) "patternname")
  2. "SOLID"

复制代码

  1. (xdrx_getpropertyvalue (entlast) "issolidfill")
  2. T

复制代码
................

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-9-11 09:02:40 | 显示全部楼层
下面是不是就该有 xdrx_setpropertyvalue  xdrx_ispropertyreadongly 了{:soso_e113:}

点评

一个一个来,这几个函数是个浩大的工程,写完,基本就把所有的ARX提高的方法和属性都通过API实现了。 先帮忙捉BUG和提建议吧。  详情 回复 发表于 2013-9-11 09:15
它们不是同时出生的?  详情 回复 发表于 2013-9-11 09:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-9-11 09:14:46 | 显示全部楼层
Free-Lancer 发表于 2013-9-11 09:02
下面是不是就该有 xdrx_setpropertyvalue  xdrx_ispropertyreadongly 了

它们不是同时出生的?{:soso_e112:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 09:15:41 | 显示全部楼层
Free-Lancer 发表于 2013-9-11 09:02
下面是不是就该有 xdrx_setpropertyvalue  xdrx_ispropertyreadongly 了

一个一个来,这几个函数是个浩大的工程,写完,基本就把所有的ARX提高的方法和属性都通过API实现了。

先帮忙捉BUG和提建议吧。

点评

在用 getpropertyvalue 的时候有 LayerID 属性而没有 Layer 属性,这个 LayerID 获取的是 Layer Object,(tblobjname "layer" layername) ,不如 xdrx_getentdxf 8 方便,还是感觉用 Property 方便,这个函数如果都  详情 回复 发表于 2013-9-11 10:02
和 dumpallproperties 对比,过滤了 ReadOnly 部分,不过有一个缺憾,没有获取 Classname 或者 IsA ,还需要用 (xdrx_getentdxf 0),有了这几个函数就基本不用去查那些繁杂的 DXF 了,直接用 ARX 的类、查询、编辑,  详情 回复 发表于 2013-9-11 09:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 09:33:03 | 显示全部楼层
XDSoft 发表于 2013-9-11 09:15
一个一个来,这几个函数是个浩大的工程,写完,基本就把所有的ARX提高的方法和属性都通过API实现了。

...

和 dumpallproperties 对比,过滤了 ReadOnly 部分,不过有一个缺憾,没有获取 Classname 或者 IsA ,还需要用 (xdrx_getentdxf 0),有了这几个函数就基本不用去查那些繁杂的 DXF 了,直接用 ARX 的类、查询、编辑,也不需要记住太多的函数,面向对象只要记住属性、方法

点评

等AcDbEntity类写完,还会往上面添加AcDbObject类的。不断完善。现在可以先用 xdrx_object_xxxx下面的函数,xdrx_object_isa xdrx_object_classname xdrx_object_owner....  详情 回复 发表于 2013-9-11 09:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 09:36:11 | 显示全部楼层
Free-Lancer 发表于 2013-9-11 09:33
和 dumpallproperties 对比,过滤了 ReadOnly 部分,不过有一个缺憾,没有获取 Classname 或者 IsA ,还 ...

等AcDbEntity类写完,还会往上面添加AcDbObject类的。不断完善。现在可以先用 xdrx_object_xxxx下面的函数,xdrx_object_isa  xdrx_object_classname xdrx_object_owner....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 10:02:05 | 显示全部楼层
XDSoft 发表于 2013-9-11 09:15
一个一个来,这几个函数是个浩大的工程,写完,基本就把所有的ARX提高的方法和属性都通过API实现了。

...

在用 getpropertyvalue 的时候有 LayerID 属性而没有 Layer 属性,这个 LayerID 获取的是 Layer Object,(tblobjname "layer" layername) ,不如 xdrx_getentdxf 8 方便,还是感觉用 Property 方便,这个函数如果都能涵盖了就不想再用 DXF 了!

点评

既然参数是 tblobjname obj name ,那么层名已经知道了, 再返回层名 是不是就多余了? getpropertyvalue 对符合表,词典那些,参数是什么?  详情 回复 发表于 2013-9-11 10:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2013-9-11 10:52:58 | 显示全部楼层
Free-Lancer 发表于 2013-9-11 10:02
在用 getpropertyvalue 的时候有 LayerID 属性而没有 Layer 属性,这个 LayerID 获取的是 Layer Object, ...

既然参数是 tblobjname obj name ,那么层名已经知道了, 再返回层名 是不是就多余了?
getpropertyvalue 对符合表,词典那些,参数是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-9-11 10:54:13 | 显示全部楼层
高版才有的函数,但2014APAI还没有:L
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-9-11 10:57:30 | 显示全部楼层
04 10 14 正好跳过这个函数!

点评

你确认输入正确的名字了? 2014下,2005下,2008下 都有这个函数 *** == AutoCAD 应用程序开发接口XdRx_API For AutoCAD Build 2013.9.11 == *** "I:/我的开发/acad-develop/XDRX-20130805/XDRX_API/Relea  详情 回复 发表于 2013-9-11 11:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2013-9-11 11:07:34 | 显示全部楼层
本帖最后由 newer 于 2013-9-11 11:21 编辑
q3_2006 发表于 2013-9-11 10:57
04 10 14 正好跳过这个函数!

你确认输入正确的名字了?

2014下,2005下,2008下 都有这个函数

***  == AutoCAD 应用程序开发接口XdRx_API For AutoCAD Build 2013.9.11  ==  ***
"I:/XDRX_API.R19.X32.arx"
命令:
命令: (xdrx_getpropertyvalue)
AcDbEntity
  ├─AcDb3dSolid
  ├─AcDbBlockReference
    ├─AcDbAttribute
    ├─AcDbAttributeDefinition
  ├─AcDbCurve
    ├─AcDb2dPolyline
    ├─AcDb3dPolyline
    ├─AcDbLine
    ├─AcDbPolyline
    ├─AcDbCircle
    ├─AcDbArc
    ├─AcDbEllipse
  ├─AcDbDimension
    ├─AcDbAlignedDimension
    ├─AcDbRotatedDimension
    ├─AcDb2LineAngularDimension
    ├─AcDb3PointAngularDimension
    ├─AcDbArcDimension
    ├─AcDbDiametricDimension
    ├─AcDbOrdinateDimension
    ├─AcDbRadialDimension
    ├─AcDbRadialDimensionLarge
  ├─AcDbHatch
  ├─AcDbRegion
  ├─AcDbText
  ├─AcDbTrace
  └─AcDbSolid

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-11 11:16:37 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-9-11 11:22 编辑
newer   发表于 2013-9-11 10:52
既然参数是 tblobjname obj name ,那么层名已经知道了, 再返回层名 是不是就多余了?
getpropertyvalu ...


参数都是实体名,不过这些非图形实体大概要用 tblobjname 获取,或者通过实体的extentiondict 获取,待有空了测试测试
还有,getpropertyvalue 查询 point 大都 x y z分开的,这样setpropertyvalue就不方便了

点评

如果是实体名的话,那就应该是 (xdrx_object_get "layer" "0")这样得到的。  详情 回复 发表于 2013-9-11 11:22
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2013-9-11 11:22:48 | 显示全部楼层
st788796 发表于 2013-9-11 11:16
参数都是实体名,不过这些非图形实体大概要用 tblobjname 获取,或者通过实体的extentiondict 获取,待有 ...

如果是实体名的话,那就应该是 (xdrx_object_get  "layer" "0")这样得到的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-11 11:43:34 来自手机 | 显示全部楼层
newer 发表于 2013-9-11 11:22
如果是实体名的话,那就应该是 (xdrx_object_get  "layer" "0")这样得到的。

都可以,主要是 get/setproperty 能获取/修改哪些属性,方不方便
cad的getpropertyvalue有个本地名称属性如 直线 圆弧 椭圆,这个不如 Classname通用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 14:26:51 | 显示全部楼层
去除 RO 部分

命令: (dumpallproperties (xdrx_object_get "layer" "0"))

Color (type: AcCmColor)  (LocalName: 颜色) = 白
Description (type: AcString)  (LocalName: 说明) =
EffectiveColor (type: AcCmColor) = 白
ExtensionDictionary (type: AcDbObjectId)  (RO) = 7ef03120
Handle (type: AcDbHandle)  (RO) = 10
HasFields (type: bool)  (RO) = 0
HasSaveVersionOverride (type: bool) = 0
IsFrozen (type: bool)  (LocalName: 冻结) = 0
IsHidden (type: bool) = 0
IsLocked (type: bool)  (LocalName: 锁定) = 0
IsOff (type: bool)  (LocalName: 开) = 0
IsPlottable (type: bool)  (LocalName: 打印) = 1
LineWeight (type: AcDb::LineWeight)  (LocalName: 线宽) = -3
LinetypeObjectId (type: AcDbObjectId)  (LocalName: 线型) = 7ef01cb0
MaterialId (type: AcDbObjectId) = 7ef01f70
Name (type: const ACHAR*)  (RO)  (LocalName: 名称) = 0
ObjectId (type: AcDbObjectId)  (RO) = 7ef01c80
OwnerId (type: AcDbObjectId)  (RO) = 7ef01c10
PlotStyleName (type: AcString)  (LocalName: 打印样式) = Color_7
PlotStyleNameId (type: AcDbObjectId) = 0
Transparency (type: AcCmTransparency)  (LocalName: 透明度) = 0
ViewportVisibilityDefault (type: bool)  (LocalName: 在新视口中冻结) = 0

点评

在什么地方去除RO部分?  详情 回复 发表于 2013-9-11 15:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-27 18:27 , Processed in 2.274653 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表