明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1831|回复: 4

这是怎么回事?简单代码...

[复制链接]
发表于 2002-8-28 11:30:00 | 显示全部楼层 |阅读模式
(defun c:c1()
  (command "pline" (list 0 0) (list 100 0) (list 100 100) (list 0 100) "c")
  (command "pline" (list 20 20) (list 120 20) (list 120 120) (list 20 120)  "c")
  )

结果画出两个大小一样,重叠在一起的四边型,这是怎么回事?
发表于 2002-8-28 11:51:00 | 显示全部楼层

请检查你的osmode变量的值,最好把它设成0.

发表于 2002-8-28 15:33:00 | 显示全部楼层

提示

注意:
AutoCAD中,OSnap命令的优先级实际上高于程序中的描述。因此,如果当前的OSnap命令中已经预置了某些几何抽点功能,将会在程序中绘图点位之上,自动按照这些抽点功能进行实际绘图点重新的确定,极有可能造成程序所描述的绘图点位不能正确实现的古怪现象。但是,如果程序描述的控制点在当前图形区窗口之外,就不会受到Osnap的任何影响。


例如:
(Command "pline"
'(0 0) '(100 0) '(100 100) '(10 0) '(100 10)
""
)

正确的图样如图4-5-1左边,但是如果当前Osnap设置为“端点”而且有效,结果就成了图44-5-1右边的样子,这显然是错的。
图4-5-1 Osnap的干涉和出错实例

虽然对于目标选择的”W”框、”C”框,自AutoCAD R14开始,Autodesk就知道不要自作主张地加上几何抽点当前设置,但是,直到AutoCAD 2002,还没有认识到,在程序点位描述的执行中,更不应当自作主张地用当前的几何抽点功能介入。这是一个很有历史的问题了。很明显,如果程序作者确实想使用几何抽点,就会使用 (OSnap) 函数,否则AutoCAD没有必要自作主张地添加。我们的正确的做法有两种,(Command)函数运行之前:
1〉设置系统变量OSnapCoord的值为1,屏蔽掉当前的几何抽点方式设置
2〉设置系统变量OSMode的值为0,清除当前几何抽点的所有预置值

由于这两个系统变量都存放在系统注册表中,将影响其它程序,因此要在程序最后的描述中,要将这些系统变量的原值恢复。

以上摘自《Visual LISP程序设计——技巧预范例》“4.5.3  在程序中引用AutoCAD命令时的注意事项”
发表于 2002-8-28 15:34:00 | 显示全部楼层

在程序中调用command命令跟交互式操作一样,也要受捕捉等因素影响

发表于 2002-8-29 09:21:00 | 显示全部楼层

偶的野路子:(command "pline" "non" pt1 "non" pt2 ....)

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

本版积分规则

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

GMT+8, 2024-11-25 17:58 , Processed in 0.174759 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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