明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1847|回复: 2

紧急求助!!![讨论][求助]

[复制链接]
发表于 2002-9-20 21:47:00 | 显示全部楼层 |阅读模式
各位高手:
请看下面一段Vlisp程序。主要是实现倒角功能,但是我发现当点击不同的象限时会有不同的结果,也就是倒角的位置不一样,我如何来控制倒角的位置呢?
(defun c:draw()
(setq po (getpoint "\nEnter the point:"))
(setq pce (polar po (* pi 1.5) 3))
(setq po1 (polar pce pi 3))
(setq po2 (polar po1 pi 5))
(command "arc" po "c" pce po1)
(setq a1 (entlast))
(command "line" po1 po2 "")
(setq a2 (entlast))
(setvar "filletrad" 0.5)
(command "fillet" a1 a2 )
(princ)
)

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

资料...

(2)线与弧间生成连接弧
在这种情况下,由于点位有控制连接弧生成位置的作用,因此,使用生成图线用的点位,加入到双元表中,要有选择。参见图5-15-1。为生成连接弧,两个响应所使用的双元表是:
     '(直线图元名 P3) 和 '(弧图元名 P2)

但对于一些特殊情况,则不能直接使用生成有关实体时的点位。在上述实例中:为了在 AutoLISP 中描述方便,不容易确定P1-P2弧包角时,可按容易描述的90°包角来处理。反正 Fillet会切掉多余的片断。
注意:
由于AutoCAD的规则所限,双元表中已有的点位应明显偏向未来弧与已有弧的切点。对于图5-15的情况,如果新弧相对于水平直线(p3、p4联线)向下弯,该点就要低于 p3;向上弯,该点就要高于 p3;该点若在 p3 上,AutoCAD将以沿所指弧,逆时针绘制新弧。再如下面的例子:
(SetQ p11 '(100 100)
       p12 '(100 150)
       p21 '(120 150)
       p22 '(200 150)
)
(Command "line" p11 p12 "")(SetQ en1 (EntLast))
(Command "line" p21 p22 "")(SetQ en2 (EntLast))
(Command "fillet" "r" 5
              "fillet" (List en1 p12) (List en2 p21)
)
(PrinC)
结果出错,不能完成圆角。提示是:“半径太大”,这当然不是原因。还是所指点的位置关系不对:两点有相同的Y值。因此,下面的写法就行了:
(SetQ p11 '(100 100)
       p12 '(100 150)
       p21 '(120 150)
       p22 '(200 150)
)
(Command "line" p11 p12 "")(SetQ en1 (EntLast))
(Command "line" p21 p22 "")(SetQ en2 (EntLast))
(Command "fillet" "r" 5
              "fillet" (List en1 (List (Car p12)(- (Cadr p12) 0.001)))
                         (List en2 p21)
)
(PrinC)
摘自《Visual LISP程序设计——技巧与范例》
发表于 2002-9-24 08:08:00 | 显示全部楼层

如陈老师说:把两点相同的Y值改为不同即可

如陈老师说:把两点相同的Y值改为不同即可
(defun C:DRAW ()
  (setq PO (getpoint "\nEnter the point:"))
  (setq PCE (polar PO (* pi 1.5) 3))
  (setq PO1 (polar PCE pi 3))
  (setq PO2 (polar PO1 pi 5))
  (command "arc" PO "c" PCE PO1)
  (setq A1 (entlast))
  (command "line" PO1 PO2 "")
  (setq A2 (entlast))
  (command "fillet" "r" 0.5
           "fillet"  (list A1 PO1)
                     (list A2 (list (car PO1) (- (cadr PO1) 0.001)))
  )
  (princ)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-15 23:18 , Processed in 0.175953 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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