找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 480|回复: 0

[API应用]:XDRX_MODENT对块内实体操作。

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-8-14 19:41:58 | 显示全部楼层 |阅读模式

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

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

×
用XdRx_ModEnt 配合Nentsel 函数可以方便的对块内实体进行修改,在加上XdRx_Regen 更新图中所有块。适用于对块的简单操作,特定情况下比重新定义块要方便。
以下是两个函数的说明:

  1. [COLOR=BLUE]XdRx_ModEnt [/COLOR]

  2. 功    能:修改实体用(entmod)

  3. 调用格式:(xdrx_ModEnt <组码1> <修改后的值> [组码2] [修改后的值] ... [组码n] [修改后的值])

  4. 说    明:组码和修改的值必须配对出现,可以提供多个配对。

  5. 示    例:将选取的文字字高修改为400,图层修改为mytxt.
  6.         xdrx_SetSsToDb,xdrx_GetEntData,xdrx_ModEnt配合使用示例。

  7.         (if (setq ss(ssget '((0 . "text"))))
  8.             (progn
  9.                 (xdrx_SetSsToDb ss 0)
  10.                 (while (setq e (xdrx_GetEntData 0))
  11.                     (xdrx_ModEnt 40 400 8 "mytxt")
  12.                 )
  13.             )
  14.         )


  1. [COLOR=BLUE] Nentsel [/COLOR]

  2. 提示用户指定点来选择对象(图元),得到这个对象所指片段的对象名
  3. (nentsel [msg])

  4. nentsel 函数提示用户选择一个对象。除非用户专门指定,否则它将忽略当前的对象捕捉模式。
  5. 为了给命令行提供更多的支持,
  6. nentsel 函数支持以前用 initget 定义的关键字。

  7. 参数

  8. msg

  9. 用作提示信息的字符串。如果省略该参数,则显示“选择对象”提示。

  10. 返回值

  11. 如果用户选择的不是复杂对象(如三维多段线或块),nentsel 函数返回的信息与 entsel 函数
  12. 相同。然而,如果所选对象是三维多段线,nentsel 函数返回一个表,其中包含子图元(顶点)
  13. 名和拾取点坐标。这与 entsel 函数返回的表类似,不同的是 nentsel 函数返回的是三维多段线
  14. 的所选顶点名,而不是多段线的头部图元名。nentsel 函数总是返回选定多段线段的起始顶点,
  15. 例如,拾取某多段线的第三段,返回的是该多段线的第三个顶点。nentsel 函数从不返回三维多
  16. 段线的 SEQEND 图元。

  17. 注意 在图形数据库中,优化多段线定义为简单图元。它不包含子图元。
  18. 选择块参照中的属性时,nentsel 返回该属性的属性名和拾取点坐标。如果选取的是块参照的一
  19. 个部件而不是属性,nentsel 返回一个包含四个元素的表。
  20. 拾取了块中的对象而返回的表中,[COLOR=RED]第一个元素是被选中图元的图元名[/COLOR],第二个元素是一个表,其
  21. 中包含用户拾取该对象时指定点的坐标。
  22. 第三个元素称为模型坐标系到世界坐标系的转换矩阵,它是一个包含四个子表的表,四个子表中
  23. 的每一个都包含了一个坐标集。该矩阵可以用来将图元定义数据中的点从称为模型坐标系 (MCS)
  24. 的内部坐标系转换为世界坐标系 (WCS)。MCS 的原点是包含所选图元的块的插入点,而 MCS 轴的
  25. 方向则由创建该块时 UCS 的方向决定。

  26. 注意 nentsel 是唯一一个使用这种类型矩阵的 AutoLISP 函数。nentselp 函数返回的矩阵与其
  27. 他 AutoLISP 和 ObjectARX 函数使用的矩阵类似。
  28. 第四个元素是一个表,它包含了选定对象所在块的图元名。若所选的对象内含在嵌套块中(即块
  29. 中块),则该表会包括内含该对象的所有块的图元名。该表的排列顺序是从最内层的块开始,向
  30. 外层推,直到遇到插入图形中的最外层块才结束。
  31. 关于将 MCS 坐标转换为 WCS 坐标的信息,请参见Visual LISP 开发人员手册的用 AutoLISP 操
  32. 纵 AutoCAD 对象一章中的图元上下文和坐标转换数据。

  33. 样例

  34. 使用线段来绘制一条三维多段线,然后加载并执行下列函数,选择直线的不同线段。取消拾取某
  35. 条线段,然后重新拾取它,以此来观察子图元的处理。然后在一条优化多段线上重复上述操作,
  36. 观察其中的区别。

  37. (defun c:subent ()
  38.   (while   
  39.      (setq Ent (entsel "\nPick an entity: "))
  40.      (print (strcat "Entity handle is: "
  41.           (cdr (assoc 5 (entget (car Ent))))))
  42.    )
  43.    (while   
  44.       (setq Ent (nentsel "\nPick an entity or subEntity: "))
  45.       (print (strcat "Entity or subEntity handle is:  "
  46.           (cdr (assoc 5 (entget (car Ent))))))
  47.    )
  48.   (prompt "\nDone.")
  49.   (princ)

  50. )


例如修改块内某一文字:STR 为新字串
(setq e (nentsel "\n选择文字: "))
(xdrx_setenttodb e)
(modent 1 STR)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 20:41 , Processed in 0.360630 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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