明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1984|回复: 2

[求助]如何获取内部函数运行中选取到的图元名?

[复制链接]
发表于 2005-1-13 17:21:00 | 显示全部楼层 |阅读模式
例如:在lisp中运行剪切命令
(command "trim" pause "" pause "" "")
如何才能在程序中得知所选择的剪切边的图元名?

发表于 2005-1-13 17:35:00 | 显示全部楼层
(ssget "p")
 楼主| 发表于 2005-1-14 14:26:00 | 显示全部楼层
请meflying斑竹帮忙看一下下面的程序,翻了好几天的资料也没找到解决方法。
  1. ;;命       令:bbb
  2. ;;功       能:增强连续尺寸标注,根据基准标注的倾斜角度自动调整后序标注的倾斜角度。
  3. ;;编       写:2005.1.12
  4. (defun c:bbb ( / ODCMD ODOSM ODTVA dim_select ss pt1 ent en1 el1 ANG ANG1 P10 P13 P14 EL EN ENT LOOPMK)
  5.    (setq odcmd (getvar "cmdecho")
  6.        odosm (getvar "osmode")
  7.        odtva (getvar "TEXTEVAL")
  8.    );;setq
  9.    (setvar "osmode" 16383)
  10.    (setvar "TEXTEVAL" 1)
  11.    (defun dim_select ()       ;;选择连续标注
  12.        (while (and (setq ent(entsel "\n选择连续标注:")
  13.                          en (car ent)
  14.                                   el (entget en)
  15.               );;setq
  16.               (/= (cdr (assoc 0 el)) "DIMENSION")              ;;如果不是标注
  17.                       (member'(100 . "AcDbRadialDimension") el)       ;;如果是半径标注
  18.               (member '(100 . "AcDbDiametricDimension") el)       ;;如果是直径标注
  19.             );;and
  20.              (princ "\n需要线性、坐标或角度关联标注。")
  21.        );;while
  22.        (if (member '(100 . "AcDbAlignedDimension") el)
  23.            (setq p10 (cdr (assoc 10 el))              ;;返回标注的定义点:尺寸线的位置点(在 WCS 中)
  24.               p14 (cdr (assoc 14el))              ;;返回线性标注和角度标注的定义点:第二条尺寸界线原点(在WCS 中)
  25.            );;setq
  26.            (setq loopmk nil)
  27.        );;if
  28.    );;defun
  29.    
  30.    (command "._undo" "_be")
  31.    (setq loopmk T)
  32.    (dim_select)                                   ;;选择连续标注
  33.    (setvar "cmdecho" 1)
  34.    
  35.    ;;下面这几句不知道如何处理。
  36.    ;;系统帮助中,连续标注命令"DIMCONTINUE"中有解释:
  37.    ;;"如果在当前任务中未创建标注,AutoCAD 将提示用户选择线性标注、坐标标注或角度标注,以用作连续标注的基准。
  38.    ;;否则,AutoCAD 将跳过该提示,并在当前任务中使用上一次创建的标注对象。"
  39.    ;;问题:1、最后创建的标注如果被删除,以前无论是否创建的有标注,"DIMCONTINUE"命令均提示选择标注。
  40.    ;;帮助中所说"上一次创建的标注对象"看来只能存放一个标注图元名,如果该图元被删除,则要求进行选择。
  41.    ;;现在问题来了,如何取得"上一次创建的标注对象"的图元名?
  42.    ;;2、如果不能取得"上一次创建的标注对象"的图元名,
  43.    ;;怎样才能让"DIMCONTINUE"命令忽略"上一次创建的标注对象"而每次都要求进行选择?
  44.    
  45. ;;;   (if (= (cdr (assoc 0 (entget (entlast)))) "DIMENSION")
  46. ;;;       (command "._DIMCONTINUE" "" ent)
  47.    (command "._DIMCONTINUE" ent)                     
  48. ;;;       (command "._DIMCONTINUE" "_S" ent)
  49. ;;;   );;if
  50.    
  51.    (while (and (> (getvar "cmdactive") 0)
  52.                   (< (getvar "cmdactive") 4)
  53.                   loopmk
  54.          );;and
  55.        (command pause)
  56.        (setq en1 (entlast)
  57.           el1 (entget en1)
  58.        );;setq
  59.        (if (and (equal en en1)
  60.                 (member '(100 . "AcDbAlignedDimension") el)
  61.        );;and
  62.            (progn
  63.                (setq p10 (cdr (assoc 10 el))
  64.                   p14 (cdr (assoc 14 el))
  65.                );;setq
  66.            );;progn
  67.            (if (and (member '(100 . "AcDbAlignedDimension") el1)
  68.                     p10 p14
  69.           );;and
  70.        (progn
  71.           (command "" "")
  72.           (command "._dimedit" "O" en1 "" p14 p10)       ;;调整标注的倾斜角度
  73.           (setq en en1)
  74.           (command "._DIMCONTINUE")
  75.        );;progn
  76.            );;if
  77.        );;if
  78.    );;while
  79.    (setvar "cmdecho" odcmd)
  80.    (setvar "osmode" odosm)
  81.    (setvar "TEXTEVAL" odtva)
  82.    (command "._undo" "_e")
  83.    (princ)
  84. );;defun
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 20:34 , Processed in 0.173381 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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