明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5657|回复: 16

ZZXXQQ 再请进 求倒角标注lisp

  [复制链接]
发表于 2005-3-14 12:37:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2005-3-16 13:41:43 编辑

ZZXXQQ 再请进

标注45°倒角。

选择待标注的倒角: 拾取待标注的45°倒角线

倒角尺寸<20.4>: (注:程序自动测出倒角尺寸做为缺省值并提示,无需输入45°角度值,程序会自动加上“×45°”字样)

那位大侠能提供帮助?

发表于 2005-3-14 20:14:00 | 显示全部楼层
程序未经调试
  1. (DEFUN DIM_CORNER ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETQ OLDZIN (GETVAR "DIMZIN"))
  5. (SETVAR "DIMZIN" 8)
  6. (SETVAR "OSMODE" 0)
  7. (PRINC "\nPlease Select a Line 请选择一条直线 :")
  8. (IF (SETQ EN (SSGET '((0 . "LINE")))) (PROGN
  9.   (SETQ DL (ENTGET (SSNAME SS 0))
  10.              P1 (CDR (ASSOC 10 DL))
  11.              P2 (CDR (ASSOC 11 DL))
  12.              X (ABS (- (CAR P1) (CAR P2)))
  13.              Y (ABS (- (CADR P1) (CADR P2))))
  14.   (IF (EQUAL X Y 1E-4) (PROGN
  15.    (PRINC "\n倒角尺寸<") (PRINC (RTOS X 2 3))
  16.    (SETQ TT (GETSTRING "> :")
  17.                TT (IF (= TT nil) (RTOS X 2 3) TT)
  18.                TT (STRCAT TT "x45%%d")
  19.                P4 (POLAR P1 (ANGLE P1 P2) (* (DISTANCE P1 P2) 0.5)))
  20.    (IF (SETQ P3 (GETPOINT P4 "\nText Point 文字点? ")) (PROGN
  21.      (COMMAND "LEADER" P4 P3 "" "" TT)
  22.    ))
  23.   ))
  24. ))
  25. (SETVAR "DIMZIN" OLDZIN)
  26. (SETVAR "OSMODE" OLDOS)
  27. (SETVAR "CMDECHO" 1)
  28. (PRINC)
  29. )
复制代码
 楼主| 发表于 2005-3-14 21:46:00 | 显示全部楼层
命令: (DIM_CORNER) Please Select a Line 请选择一条直线 :
选择对象: 找到 1 个 选择对象:
; 错误: 参数类型错误: lselsetp nil
发表于 2005-3-15 10:14:00 | 显示全部楼层
调试过的程序


       

本帖子中包含更多资源

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

x
 楼主| 发表于 2005-3-15 13:12:00 | 显示全部楼层
ZZXXQQ 能否追加两行 1. 运行LEADER 命令之前设置箭头格式为 "无" 2. 运行LEADER 命令之后恢复箭头格式为 "实心箭头"
发表于 2005-3-15 19:33:00 | 显示全部楼层
试一下,程序未经调试。
  1. (DEFUN  C:DIM_CORNER  ()
  2. (SETVAR  "CMDECHO"  0)
  3. (SETQ  OLDOS  (GETVAR  "OSMODE"))
  4. (SETQ  OLDZIN  (GETVAR  "DIMZIN"))
  5. (SETVAR  "DIMZIN"  8)
  6. (SETVAR  "OSMODE"  0)
  7. (PRINC  "\nPlease  Select  a  Line  请选择一条直线  :")
  8. (IF  (SETQ  SS  (SSGET  '((0  .  "LINE"))))  (PROGN
  9.   (SETQ  DL  (ENTGET  (SSNAME  SS  0))
  10.               P1  (CDR  (ASSOC  10  DL))
  11.               P2  (CDR  (ASSOC  11  DL))
  12.               X  (ABS  (-  (CAR  P1)  (CAR  P2)))
  13.               Y  (ABS  (-  (CADR  P1)  (CADR  P2))))
  14.   (IF  (EQUAL  X  Y  1E-4)  (PROGN
  15.     (PRINC  "\n倒角尺寸<")  (PRINC  (RTOS  X  2  3))
  16.     (SETQ  TT  (GETSTRING  ">  :")
  17.                 TT  (IF  (=  TT  "")  (RTOS  X  2  3)  TT)
  18.                 TT  (STRCAT  TT  "x45%%d")
  19.                 P4  (POLAR  P1  (ANGLE  P1  P2)  (*  (DISTANCE  P1  P2)  0.5)))
  20.     (IF  (SETQ  P3  (GETPOINT  P4  "\nText  Point  文字点?  "))  (PROGN
  21.       (COMMAND  "LEADER"  P4  P3  ""  ""  ""  TT  "")
  22.     ))
  23.   ))
  24. ))
  25. (SETVAR  "DIMZIN"  OLDZIN)
  26. (SETVAR  "OSMODE"  OLDOS)
  27. (SETVAR  "CMDECHO"  1)
  28. (PRINC)
  29. )
复制代码
 楼主| 发表于 2005-3-15 21:06:00 | 显示全部楼层
ZZXXQQ 您好,期待您再次光临!!! 我只是一个 lisp菜鸟,基础很差,工作很忙,但我热爱CAD,也开始对lisp感兴趣了 您的热心帮助,使我所要的功能基本实现(即提取所要倒角的大小,无需键盘输入了) 但是,leader 引线与倒角线并不重合,有一个很小的角度,这是唯一的缺点,如果能把您的程序提取倒角大小数值的功能复合到以下lisp 的 text ,那将是非常优秀啦,拜托了! ;;标注倒角
(defun c:dj()
(setvar "cmdecho" 0)
(setvar "orthomode" 1)
;(setq ang (getangle "\n input angle<45>: "))
;(if (null ang) (setq ang (* 45 (/ pi 180)))
; )
(setq ang (* 45 (/ pi 180)))
(setvar "snapang" ang)
(setq p1 (getpoint "\n first point: "))
(setq OS (getvar "osmode"))
(setvar "osmode" 0)
(setq p2 (getpoint p1 "\n second point: "))
(if (> (car p2) (car p1))
(progn
(setq D (* (getvar "dimscale") 15 ))
(setq p3 (polar p2 0 D))
(setq p4 (list (+ (car p2) (/ D 2)) (cadr p2)))
)
(progn
(setq p3 (polar p2 (* 180 (/ PI 180)) D))
(setq p4 (list (+ (car p3) (/ D 2)) (cadr p3)))
)
)
;(command "_style" "bdihz" "ascii.shx,bdihz.shx" "0" "0.8" "0" "" "" "" )
;(command "_layer" "m" 5 "c" 3 "" "")
;(command "color" "bylayer")
(command "line" p1 p2 p3 "")
(setq th (* (getvar "dimscale") 4 ))
(setq L (* (getvar "dimscale") 1.1 ))
(setq p5 (polar p4 (* 0.5 PI) L))
(command "text" "j" "c" p5 th "0" )
(setvar "osmode" OS)
(setvar "snapang" 0)
(princ)
)
发表于 2005-3-16 21:20:00 | 显示全部楼层
ZZXXQQ大侠,又有问题请教!


上述倒角程序,我想把它改为标注值格式为C*.*(我在国民党的公司买命,要求这样标).我稍做了一下修改(如下).


当倒角为C1.5(有一位小数),标注值为C1.5.很OK.


当倒角为C3.0(整数) ,标注值为C3.不OK.我想让它标示为C3.0,咋整!


       

<RE>(DEFUN C:DIM_CORNER ()
(setvar "ORTHOMODE" 0)
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(SETQ OLDZIN (GETVAR "DIMZIN"))
(SETQ OLDLTD (GETVAR "DIMALTD"))
(SETVAR "DIMZIN" 8)
(SETVAR "OSMODE" 0)
(SETVAR "DIMALTD" 2)
(PRINC "\nPlease Select a Line 请选择一条直线 :")
(IF (SETQ SS (SSGET '((0 . "LINE")))) (PROGN
(SETQ DL (ENTGET (SSNAME SS 0))
       P1 (CDR (ASSOC 10 DL))
       P2 (CDR (ASSOC 11 DL))
       X (ABS (- (CAR P1) (CAR P2)))
       Y (ABS (- (CADR P1) (CADR P2))))
(IF (EQUAL X Y 1E-4) (PROGN
  (PRINC "\n倒角尺寸&lt;") (PRINC (RTOS X 2 3))
  (SETQ TT (GETSTRING "&gt; :")
        TT (IF (= TT "") (RTOS X 2 3) TT)
        TT (STRCAT "C" TT)
        P4 (POLAR P1 (ANGLE P1 P2) (* (DISTANCE P1 P2) 0.5)))
  (IF (SETQ P3 (GETPOINT P4 "\nText Point 文字点? ")) (PROGN
   (COMMAND "LEADER" P4 P3 "" "" "" TT "")
  ))
))
))
(SETVAR "DIMZIN" OLDZIN)
(SETVAR "OSMODE" OLDOS)
(SETVAR "DIMALTD" OLDLTD)
(SETVAR "CMDECHO" 1)
(setvar "ORTHOMODE" 1)
(PRINC)
)
</PRE>
发表于 2005-3-17 14:54:00 | 显示全部楼层
本帖最后由 作者 于 2005-3-17 15:28:32 编辑

更改后的程序
  1. (DEFUN C:DIM_CORNER ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETQ OLDZIN (GETVAR "DIMZIN"))
  5. (SETVAR "DIMZIN" 8)
  6. (SETVAR "OSMODE" 0)
  7. (PRINC "\nPlease Select a Line 请选择一条直线 :")
  8. (IF (SETQ SS (SSGET '((0 . "LINE")))) (PROGN
  9.   (SETQ DL (ENTGET (SSNAME SS 0))
  10.              P1 (CDR (ASSOC 10 DL))
  11.              P2 (CDR (ASSOC 11 DL))
  12.              X (ABS (- (CAR P1) (CAR P2)))
  13.              Y (ABS (- (CADR P1) (CADR P2))))
  14.   (IF (EQUAL X Y 1E-4) (PROGN
  15.    (PRINC "\n倒角尺寸<") (PRINC (RTOS X 2 3))
  16.    (SETQ TT (GETSTRING "> :")
  17.                TT (IF (= TT "") (RTOS X 2 3) TT)
  18.                TT (IF (> (- X (FIX X)) 0) TT (STRCAT TT ".0"))
  19.                TT (STRCAT TT "x45%%d")
  20.                OLDASZ (GETVAR "DIMASZ")
  21.                P4 (POLAR P1 (ANGLE P1 P2) (* (DISTANCE P1 P2) 0.5)))
  22.    (SETVAR "DIMASZ" 0)
  23.    (SETQ ANG (/ PI 4))
  24.    (SETVAR "SNAPANG" ANG)
  25.    (IF (SETQ P3 (GETPOINT P4 "\nText Point 文字点? ")) (PROGN
  26.      (COMMAND "LEADER" P4 P3 "" "" "" TT "")
  27.    ))
  28.    (SETVAR "SNAPANG" 0)
  29.    (SETVAR "DIMASZ" OLDASZ)
  30.   ))
  31. ))
  32. (SETVAR "DIMZIN" OLDZIN)
  33. (SETVAR "OSMODE" OLDOS)
  34. (SETVAR "CMDECHO" 1)
  35. (PRINC)
  36. )
复制代码
 楼主| 发表于 2005-3-17 17:22:00 | 显示全部楼层
鲜花
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-9 04:19 , Processed in 0.172098 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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