找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2190|回复: 13

[求助] 新人第五帖,怎么查询与修改三维实体的长宽高(未解决)

[复制链接]
发表于 2014-12-14 21:02:54 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 rsent 于 2014-12-17 14:51 编辑


;查看ename实体的dxf码
(defun c:c1()(entget (car(entsel))))
;查看VLA对象的特性
(defun c:c2()(vlax-dump-object  (vlax-ename->vla-object (car(entsel)))))
;查看VLA对象的特性和方法
(defun c:c3()(vlax-dump-object  (vlax-ename->vla-object (car(entsel))) t))

都没找到相关的特性。。

1.jpg

感谢 Lispboy 和Free-Lancer的帮助。。你们代码写的真棒!
只是还是卡在 修改特性上面。。慢慢研究,总会解决的。

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

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-14 21:31:16 | 显示全部楼层
看楼主发一天帖子了都和三维有关,楼主做什么工作的?


既然新学,直接用XDRX API吧,下面红色的是对3DSOLID实体支持的查询方法。

命令: (xdrx_getpropertyvalue (entlast))

Class AcDb3dSolid:

    ├─Centroid
    ├─BoundingBox
    ├─MomInertia
    ├─ProdInertia
    ├─PrinMoments
    ├─PrinAxes
    ├─RadiiGyration
    ├─NumChanges
    ├─IsNull



Class AcDbEntity:

    ├─BoundingBox
    ├─Color
    ├─ECS
    ├─Layer
    ├─Layout
    ├─Linetype
    ├─LinetypeScale
    ├─LineWeight
    ├─Plane
    ├─PlotStyleName
    ├─StretchPoint
    ├─Transparency
    ├─Visibility

Class AcDbObject:
    ├─ClassName
    ├─ExtensionDictionary
    ├─FieldDictionary
    ├─IsA
    ├─IsAProxy
    ├─IsErased
    ├─IsReallyClosing
    ├─Handle
    ├─HasFields
    ├─MyParent
    ├─ObjectID
    ├─Owner

点评

可以用lsp吗? 正在学习中。。感觉功能很强大。我是做家具设计的。可以用lsp吗? 正  详情 回复 发表于 2014-12-14 21:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-14 21:40:23 | 显示全部楼层
加载XDRX API后,试下下面的代码:

QQ截图20141214213935.png

  1. (defun c:tt()
  2.    (if (setq e (car (xdrx_entsel "\n拾取3DSOLID实体<退出>:" '((0 . "3DSOLID")))))
  3.       (progn
  4.          (setq box (xdrx_getpropertyvalue e "boundingbox")
  5.                h (- (last (last box)) (last (car box)))
  6.                v (mapcar '- (last box)(car box))
  7.                x (car v)
  8.                y (cadr v)
  9.          )
  10.          (princ (strcat "\n长: " (vl-princ-to-string x) "  宽:" (vl-princ-to-string y) "  高:" (vl-princ-to-string h)))
  11.       )
  12.    )
  13.    (princ)
  14. )

点评

大师。。查询解决了。可以修改刚刚得到的 长 宽 高的值吗? xd里有这个函数吗  详情 回复 发表于 2015-1-10 23:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-14 21:42:17 | 显示全部楼层
Lispboy 发表于 2014-12-14 21:31
看楼主发一天帖子了都和三维有关,楼主做什么工作的?

可以用lsp吗? 正在学习中。。感觉功能很强大。我是做家具设计的。可以用lsp吗?  正

点评

你看上面的代码不是LISP吗? XDRX API是用ARX写的供LISP使用的函数库,你加载后,就和你用的那些LISP,VLISP系统自带的函数是一样的使用。  详情 回复 发表于 2014-12-14 21:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2014-12-14 21:44:36 | 显示全部楼层
rsent 发表于 2014-12-14 21:42
可以用lsp吗? 正在学习中。。感觉功能很强大。我是做家具设计的。可以用lsp吗?  正

你看上面的代码不是LISP吗? XDRX API是用ARX写的供LISP使用的函数库,你加载后,就和你用的那些LISP,VLISP系统自带的函数是一样的使用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-15 08:04:22 | 显示全部楼层

  1. (vl-load-com)
  2. (defun c:tt (/ e v bp up)
  3.   (while (setq e (ssget ":S" '((0 . "3dsolid"))))
  4.     (progn
  5.       (vla-getboundingbox
  6.         (vlax-ename->vla-object (ssname e 0))
  7.         'bp
  8.         'up
  9.       )
  10.       (setq v (mapcar '- (safearray-value up) (safearray-value bp)))
  11.       (princ (strcat "\n"
  12.                      (apply 'strcat
  13.                             (mapcar '(lambda (x y)
  14.                                        (strcat x (rtos y 2 4))
  15.                                      )
  16.                                     '("长 = " "; 宽 = " "; 高 = ")
  17.                                     v
  18.                             )
  19.                      )
  20.              )
  21.       )
  22.     )
  23.   )
  24.   (princ)
  25. )


点评

大师。您好。。请问下 怎么获得 由三维实体组成的图形的 总面积。我用你教的getboundingbox写的。请看看 http://bbs.xdcad.net/forum.php?mod=viewthread&tid=679410&page=1#pid3547747  详情 回复 发表于 2015-1-18 22:19
老师。你代码写的真好。 老师。你代码写的真好。 还想请问下怎么一修改“长” (setq r (getreal "\n 修改后的总长度:"))  详情 回复 发表于 2014-12-15 11:00
非常敬佩您!纯Lsp代码感觉就是亲切!  详情 回复 发表于 2014-12-15 08:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5600个

财富等级: 富甲天下

发表于 2014-12-15 08:47:02 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2014-12-15 11:00:31 | 显示全部楼层

老师。你代码写的真好。 老师。你代码写的真好。 还想请问下怎么一修改“长”
(setq r (getreal "\n 修改后的总长度:"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-15 11:43:14 | 显示全部楼层
rsent 发表于 2014-12-15 11:00
老师。你代码写的真好。 老师。你代码写的真好。 还想请问下怎么一修改“长”
(setq r (getreal "\n 修 ...

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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

发表于 2014-12-15 23:14:56 | 显示全部楼层
太强大了!

点评

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

使用道具 举报

 楼主| 发表于 2014-12-15 23:25:37 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2015-1-10 23:57:10 | 显示全部楼层
Lispboy 发表于 2014-12-14 21:40
加载XDRX API后,试下下面的代码:

大师。。查询解决了。可以修改刚刚得到的 长 宽 高的值吗? xd里有这个函数吗

点评

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2015-1-11 11:38:16 | 显示全部楼层
rsent 发表于 2015-1-10 23:57
大师。。查询解决了。可以修改刚刚得到的 长 宽 高的值吗? xd里有这个函数吗


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

使用道具 举报

 楼主| 发表于 2015-1-18 22:19:11 | 显示全部楼层

大师。您好。。请问下 怎么获得 由三维实体组成的图形的 总面积。我用你教的getboundingbox写的。请看看

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 14:32 , Processed in 0.461338 second(s), 66 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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