找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2635|回复: 7

[每日一码] 用于天正给排水将管线按管径分层

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-10-7 10:27:49 | 显示全部楼层 |阅读模式

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

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

×
1 天正实体不能用 xdrx_modent 修改,会崩溃的
2 天正实体的属性获取可以用 (entget (car (entsel))) 查看后再用 assoc 获取,ActiveX 方法不一定提供,要自己尝试,包括 Put 方式,可能要付出崩溃代价
  1. (defun c:tt (/ ss e lyr)
  2.   (and (setq ss (ssget '((0 . "TCH_PIPE"))))
  3.        (xdrx_setsstodb ss 0)
  4.        (while (setq e (xdrx_getentdata 0))
  5.          (setq el  (entget e)
  6.                lyr (strcat (strcase (xdrx_getentdxf 301))
  7.                            (rtos (xdrx_getentdxf 140) 2 0)
  8.                    )
  9.          )
  10.          (xdrx_layer_make lyr)
  11.          (entmod (subst (cons 8 lyr) (assoc 8 el) el))
  12.        )
  13.   )
  14.   (princ)
  15. )



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

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-10-7 10:36:29 | 显示全部楼层
试试用 xdrx_setpropertyvalue 能修改不?理论上能。

点评

试过了,不行, 用 LayerID 就可以 命令: (xdrx_setpropertyvalue (car (entsel)) "Layer" "0") 选择对象: nil 下面的可以修改 命令: (setpropertyvalue (car (entsel)) "LayerID" (tblobjname "layer  详情 回复 发表于 2013-10-7 10:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-10-7 10:58:41 | 显示全部楼层
XDSoft 发表于 2013-10-7 10:36
试试用 xdrx_setpropertyvalue 能修改不?理论上能。

试过了,不行, 用 LayerID 就可以, xdrx_setpropertyvalue 用 String 方便了,但是转到 ID 上更安全

命令: (xdrx_setpropertyvalue (car (entsel)) "Layer" "0")

选择对象: nil



下面的可以修改
命令: (setpropertyvalue (car (entsel)) "LayerID" (tblobjname "layer" "0"))

选择对象: nil

点评

字符串在API里面,也是要得到LAYERID后再操作的,无所谓安全不安全。 原则上,只要是AcDbEntity派生的自定义实体,都可以用xdrx_setpropertyvalue的。 没装天正软件,不能测试。 你测试下其他属性看看。  详情 回复 发表于 2013-10-7 11:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-10-7 11:47:56 | 显示全部楼层
eachy 发表于 2013-10-7 10:58
试过了,不行, 用 LayerID 就可以, xdrx_setpropertyvalue 用 String 方便了,但是转到 ID 上更安全

...



字符串在API里面,也是要得到LAYERID后再操作的,无所谓安全不安全。

原则上,只要是AcDbEntity派生的自定义实体,都可以用xdrx_setpropertyvalue的。
没装天正软件,不能测试。

你测试下其他属性看看。

另外,对自定义实体,执行下 (xdrx_object_parent e)看看父类是什么。

点评

估计得找到爷爷辈才行 命令: (xdrx_object_parent (car (entsel))) 选择对象: "TDbPipePrototype" 命令: (dumpallproperties (car (entsel))) 选择对象: Begin dumping object (class: TDbPipe) Annota  详情 回复 发表于 2013-10-7 14:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-7 12:27:12 来自手机 | 显示全部楼层
天正总是设些障碍,记得以前某个版本可以用 vlax-put-property 后来就减少了COM,还有过Entmod都崩溃情况
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-10-7 14:08:45 | 显示全部楼层
XDSoft 发表于 2013-10-7 11:47
字符串在API里面,也是要得到LAYERID后再操作的,无所谓安全不安全。

原则上,只要是AcDbEntity派 ...

估计得找到爷爷辈才行

命令: (xdrx_object_parent (car (entsel)))

选择对象: "TDbPipePrototype"

命令: (dumpallproperties (car (entsel)))

选择对象: Begin dumping object (class: TDbPipe)
Annotative (type: bool)  (LocalName: 注释性) = Failed to get value
AnnotativeScale (type: AcString)  (RO)  (LocalName: 注释性比例) = Failed to get value
Area (type: double)  (RO)  (LocalName: 面积) = 0.000000
BlockId (type: AcDbObjectId)  (RO) = 7ef05c10
CastShadows (type: bool) = 1
ClassName (type: AcString)  (RO) =
Closed (type: bool)  (RO)  (LocalName: 闭合) = Failed to get value
CollisionType (type: AcDb::CollisionType)  (RO) = 1
Color (type: AcCmColor)  (LocalName: 颜色) = BYLAYER
EndParam (type: double)  (RO) = 7275.892263
EndPoint/X (type: double)  (RO)  (LocalName: 端点 X 坐标) = 27862.557526
EndPoint/Y (type: double)  (RO)  (LocalName: 端点 Y 坐标) = 27675.592757
EndPoint/Z (type: double)  (RO)  (LocalName: 端点 Z 坐标) = 0.000000
ExtensionDictionary (type: AcDbObjectId)  (RO) = 0
Handle (type: AcDbHandle)  (RO) = 2ab
HasFields (type: bool)  (RO) = 0
HasSaveVersionOverride (type: bool) = 0
Hyperlinks (type: AcDbHyperlink*)
IsA (type: AcRxClass*)  (RO) = TDbPipe
IsAProxy (type: bool)  (RO) = 0
IsCancelling (type: bool)  (RO) = 0
IsEraseStatusToggled (type: bool)  (RO) = 0
IsErased (type: bool)  (RO) = 0
IsModified (type: bool)  (RO) = 0
IsModifiedGraphics (type: bool)  (RO) = 0
IsModifiedXData (type: bool)  (RO) = 0
IsNewObject (type: bool)  (RO) = 0
IsNotifyEnabled (type: bool)  (RO) = 0
IsNotifying (type: bool)  (RO) = 0
IsObjectIdsInFlux (type: bool)  (RO) = 0
IsPeriodic (type: bool)  (RO) = 0
IsPersistent (type: bool)  (RO) = 1
IsPlanar (type: bool)  (RO) = 1
IsReadEnabled (type: bool)  (RO) = 1
IsReallyClosing (type: bool)  (RO) = 1
IsTransactionResident (type: bool)  (RO) = 0
IsUndoing (type: bool)  (RO) = 0
IsWriteEnabled (type: bool)  (RO) = 0
LayerId (type: AcDbObjectId)  (LocalName: 图层) = 7ef06b20
LineWeight (type: AcDb::LineWeight)  (LocalName: 线宽) = -1
LinetypeId (type: AcDbObjectId)  (LocalName: 线型) = 7ef05c28
LinetypeScale (type: double)  (LocalName: 线型比例) = 1.000000
LocalizedName (type: AcString)  (RO) =
MaterialId (type: AcDbObjectId)  (LocalName: 材质) = 7ef06170
MergeStyle (type: AcDb::DuplicateRecordCloning)  (RO) = 1
ObjectId (type: AcDbObjectId)  (RO) = 7ef06c18
OwnerId (type: AcDbObjectId)  (RO) = 7ef05c10
PlotStyleName (type: AcString)  (LocalName: 打印样式) = ByLayer
ReceiveShadows (type: bool) = 1
ShadowDisplay (type: AcDb::ShadowFlags)  (RO)  (LocalName: 阴影显示) = Failed to get value
StartParam (type: double)  (RO) = 0.000000
StartPoint/X (type: double)  (RO)  (LocalName: 起点 X 坐标) = 35137.744588
StartPoint/Y (type: double)  (RO)  (LocalName: 起点 Y 坐标) = 27776.891565
StartPoint/Z (type: double)  (RO)  (LocalName: 起点 Z 坐标) = 0.000000
Transparency (type: AcCmTransparency)  (LocalName: 透明度) = 0
Visible (type: AcDb::Visibility) = 0
End object dump
nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8613个

财富等级: 富甲天下

发表于 2013-10-7 19:58:19 | 显示全部楼层
斯维尔的也一样,entmod时经常崩溃,没有什么规律。

点评

因为斯维尔和天正就是一套内部核心代码。  详情 回复 发表于 2013-10-7 20:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-7 20:23:19 | 显示全部楼层
liuyj 发表于 2013-10-7 19:58
斯维尔的也一样,entmod时经常崩溃,没有什么规律。

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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