还得请教一个可能有点菜的问题,请解答:
在图中,用Autolisp编程,在求得P1和P2点后,自动将1图中的过P2点的线剪掉,即成图2样子。用的语句是(command "_trim" p1 "" p2 "")
我发现,在线条很密或屏幕缩放比较小时,会发生错误,没有剪掉,这个语句有什么问题,怎么解决?
图没贴上,请看
试试这个
不一定有用,(command "_trim" "non" p1 "" "non" p2 "")
发生错误的原因和拾取框的大小有关,可以
可以在程序中加入一句(setvar “pickbox” 0),这样在选择时就会精确定位.非也...
“双元表”,是AutoLISP特有的表数据类型之一,是一种针对AutoCAD数据库所特有的检索指针,就像是 (EntSel) 函数的返回值那样的数据结构。实际上也可以用 (List) 函数,按这种格式组成自定义的双元表。这种特有的数据结构,是在程序中使用CAGD技术的关键之一。对于一些编辑命令,在指目标时,所指点位与处理的结果有关,就要在AutoLISP 中应当用双元表来“精确响应”要目标的提示,这也是AutoLISP特有的、相当有实用价值的技巧。这类命令有:DIM、EXTEND、TRIM、FILLET、CHAMFER、DIVIDE、MEASURE等等。下面有几个例子来说明双元表的使用技术:
例I:
如用 AutoLISP 制作的功能绘制较大图幅的图形时,一般是在全图幅显示下自动绘图,以便全面查看生成过程。在画机械图时,标尺寸是基本要求。但多数情况下要标尺寸的图线比较密集,其近旁还有不少其它对象,用指定点位来指目标,即使把目标选择框设置得相当小,也会一下子套住好几个目标,造成标注失败。如果为了能唯一地选中目标在程序中使用了 'ZOOM-W,又会加长运行时间。
较好的处理是使用双元表来响应关于DIM中“选择标注对象: ”的提示。用指定对象双元表的方法比指两个点标尺寸更方便和准确,而且能够标注各种尺寸。
如果EN是想要标注尺寸的图线的对象名(一般条件下可以在画好该对象后,紧接着用 (SetQ en (EntLast)) 得到),而 PT 是该对象上的,或对象近旁的一个点的点位表。一般直接使用生成该对象时的所用的点位。更详细的内容在下一个题目中讨论。
摘自《Visual LISP程序设计——技巧与范例》“5.3对象描述双元表及其使用”
页:
[1]