明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2144|回复: 4

求助

[复制链接]
发表于 2003-4-15 16:39:00 | 显示全部楼层 |阅读模式
(defun C:dwx ()
  (setvar "osmode" 0)
  (graphscr)
  (setq oce (getvar "cmdecho"))
  (setvar "cmdecho" 0)

  (setq p1 (getpoint "\n基点:"))
  (setq a  (getreal "\n大径:"))
  (cond ((=  a 1) (setq h 4.0) (setq d 3.0) (setq l 10.0) (setq c 0.2))
        ((=  a 2) (setq h 4.0) (setq d 3.0) (setq l 10.0) (setq c 0.2))
        ((> a 2) (setq h 5.0) (setq d 5.0) (setq l 12.0) (setq c 0.4))
        ( princ "\n没有此值")
           )
  (setq p2 (polar p1 (* pi 2) (- (/ d 2) 0.5))
        p3 (polar p2 (* pi 0.25) 0.707107)
        p4 (polar p3 (* pi 0.5) (- l h 0.5))
        p5 (polar p4  pi  (/ (- d a) 2))
        p6 (polar p5 (* pi 0.5) (- h c))
        p7 (polar p6 (* pi 0.583333) (* 1.035276 c))
        p8 (polar p1 (* pi 0.5) l)
        p14(polar p1 pi (- (/ d 2) 0.5))
        p13 (polar p14  (* pi 0.75) 0.707107)
        p12 (polar p13 (* pi 0.5) (- l h 0.5))
        p11 (polar p12 (* pi 2) (/ (- d a) 2))
        p10 (polar p11 (* pi 0.5) (- h c))
        p9  (polar p10 (* pi 0.416667) (* 1.035276 c))
        p15 (polar p4 pi (/ (- d a) 6))
        p16 (polar p6 (* pi 1.5) (* h 0.5) )
        p17 (polar p10 (* pi 1.5) (* h 0.5) )
        p18 (polar p12 (* pi 2) (/ (- d a) 6))           
        )   
               (command "line" p2 p3 p4 p5 p6 p7 p9 p10 p11 p12 p13 p14  "c")
        (command "fillet" "r" 0.5)
        (command "line" p3 p13 "")
        (command "line" p6 p10 "")
        (command "fillet" p15 p16)
        (command "fillet" p17 p18)
        (command "line" p4 p12 "")   
        (command "line" p1 p8 "")
                (setvar "cmdecho" oce)
         (setvar "osmode" 1)
      
  )
同一个程序画出来的图,请教一下是怎么回事!!!!

本帖子中包含更多资源

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

x

相关帖子

发表于 2003-4-15 16:45:00 | 显示全部楼层

倒角问题,建议所有倒角直接画出,因为倒角是选择实体是一个比较麻烦的事情,直接画

倒角问题,建议所有倒角直接画出,因为倒角是选择实体是一个比较麻烦的事情,直接画简单多了[br]
发表于 2003-4-16 08:55:00 | 显示全部楼层

Fillet的响应必须用双元表!

5.3  对象描述双元表及其使用
“双元表”,是AutoLISP特有的表数据类型之一,是一种针对AutoCAD数据库所特有的检索指针,就像是 (EntSel) 函数的返回值那样的数据结构。实际上也可以用 (List) 函数,按这种格式组成自定义的双元表。这种特有的数据结构,是在程序中使用CAGD技术的关键之一。
对于一些编辑命令,在指目标时,所指点位与处理的结果有关,就要在AutoLISP 中应当用双元表来“精确响应”要目标的提示,这也是AutoLISP特有的、相当有实用价值的技巧。这类命令有:DIM、EXTEND、TRIM、FILLET、CHAMFER、DIVIDE、MEASURE等等。下面有几个例子来说明双元表的使用技术:

摘自《Visual LISP程序设计——技巧与范例》

多说一句:这些技术都是早已成熟的方法,但您在一般的书中不会找到,因为作者也不知道,而Help中也没有。其实,在我写的书中,从R12的AutoLISP就已经用大量的篇幅介绍专业程序设计中具体问题的解决方案了,一本书,几乎包括了全部可能的解决方案。
发表于 2003-4-16 10:04:00 | 显示全部楼层

很难得(我在台湾)手上有陈老师的书《Visual LISP程序设计——技巧与范例》

发表于 2003-4-17 08:21:00 | 显示全部楼层

程序供參考....

本帖最后由 作者 于 2003-4-17 8:21:10 编辑

(defun C:DWX ()
  (setvar "osmode" 0)
  (graphscr)
  (setq OCE (getvar "cmdecho"))
  (setvar "cmdecho" 0)

  (setq P1 (getpoint "\n基点:"))
  (setq A (getreal "\n大径:"))
  (cond        ((= A 1)
         (setq H 4.0)
         (setq D 3.0)
         (setq L 10.0)
         (setq C 0.2)
        )
        ((= A 2)
         (setq H 4.0)
         (setq D 3.0)
         (setq L 10.0)
         (setq C 0.2)
        )
        ((> A 2)
         (setq H 5.0)
         (setq D 5.0)
         (setq L 12.0)
         (setq C 0.4)
        )
        (princ "\n没有此值")
  )
  (setq        P2  (polar P1 (* pi 2) (- (/ D 2) 0.5))
        P3  (polar P2 (* pi 0.25) 0.707107)
        P4  (polar P3 (* pi 0.5) (- L H 0.5))
        P5  (polar P4 pi (/ (- D A) 2))
        P6  (polar P5 (* pi 0.5) (- H C))
        P7  (polar P6 (* pi 0.583333) (* 1.035276 C))
        P8  (polar P1 (* pi 0.5) L)
        P14 (polar P1 pi (- (/ D 2) 0.5))
        P13 (polar P14 (* pi 0.75) 0.707107)
        P12 (polar P13 (* pi 0.5) (- L H 0.5))
        P11 (polar P12 (* pi 2) (/ (- D A) 2))
        P10 (polar P11 (* pi 0.5) (- H C))
        P9  (polar P10 (* pi 0.416667) (* 1.035276 C))
        P15 (polar P4 pi (/ (- D A) 6))
        P16 (polar P6 (* pi 1.5) (* H 0.5))
        P17 (polar P10 (* pi 1.5) (* H 0.5))
        P18 (polar P12 (* pi 2) (/ (- D A) 6))
  )
  (command "line" P2 P3 P4 "")
  (command "line" P4 P5 "")
  (setq L4 (entlast))
  (command "line" P5 P6 "")
  (setq L5 (entlast))
  (command "line" P6 P7 P9 P10 "")
  (command "line" P10 P11 "")
  (setq L10 (entlast))
  (command "line" P11 P12 "")
  (setq L11 (entlast))
  (command "line" P12 P13 P13 P14 P2 "")
  (command "fillet" "r" 0.5)
  (command "line" P3 P13 "")
  (command "line" P6 P10 "")
  (if (/= A 5.0)
    (progn
      (command "fillet" (list L4 P4) (list L5 P6))
      (command "fillet" (list L10 P10) (list L11 P12))
      (command "line" P4 P12 "")
      )
  )
  (command "line" P1 P8 "")
  (setvar "cmdecho" OCE)
  (setvar "osmode" 1)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 09:38 , Processed in 0.186265 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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