明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1431|回复: 3

[提问] [源码]修改线段长度-initget参数设置问题

[复制链接]
发表于 2016-3-21 13:10:31 | 显示全部楼层 |阅读模式
以下是修改线段长度的源码,
麻烦帮我加个initget的交互输入,像这样
  1. "\n请输入每边变化值 /或 <总长T>: "
复制代码
当输入T时
  1. "\n请输入改后总长 "
复制代码
源码部分


  1. (defun c:tt()
  2. (setq os (getvar "osmode"))
  3. (setvar "osmode" 0)
  4. (princ "\n请选择对象:")
  5. (setq ss(ssget '((0 . "line,arc"))))
  6. (setq d (getreal "\n请输入每边变化值: "))
  7. (setq len(sslength ss))
  8. (setq i 0)
  9. (if (/= NIL ss)
  10.   (repeat len
  11. (setq en1(ssname ss i))
  12. (setq e1 (entget en1))
  13. (setq TS (cdr(assoc 0 e1)))
  14. (cond
  15.   ((= TS "LINE")  ;直线
  16. (setq pt1 (cdr (assoc 10 e1)))
  17. (setq ptt1 (cdr (assoc 11 e1)))
  18. (setq px1 (car pt1)
  19.        py1 (cadr pt1)
  20.        z0 (list px1 py1))
  21. (setq pxx1 (car ptt1)
  22.        pyy1 (cadr ptt1)
  23.        z2 (list pxx1 pyy1))
  24. (setq zx1 (/ (+ px1 pxx1) 2.0)
  25.        zy1 (/ (+ py1 pyy1) 2.0)
  26.        z1 (list zx1 zy1))
  27. (setq zc (distance pt1 ptt1))  ;;;;;;;;;;;直线总长
  28. (if (> (- d) (/ zc 2.0)) (exit))
  29. (setq jd (angle z0 z2))
  30. (setq b0 (polar z0 (+ pi jd) d))
  31. (setq bn (polar z2 jd d ))
  32. (setq e1 (subst (cons 10 b0) (assoc 10 e1) e1))
  33. (setq e1 (subst (cons 11 bn) (assoc 11 e1) e1))
  34. (entmod e1)
  35. )
  36. ((= TS "ARC")  ;圆弧
  37. (setq o (cdr (assoc 10 e1))
  38.        r (cdr (assoc 40 e1))
  39.        p0 (cdr (assoc 50 e1))
  40.        pn (cdr (assoc 51 e1))
  41.        hd0 (- pn p0)
  42.        zdhd (+ p0 (/ hd0 2.0)))
  43. (if (>= d (* (/ (abs (/ hd0 2.0)) pi) pi r)) (exit))
  44. (setq ds (atof (angtos hd0 0 4))
  45.        zc (* 2 pi r (/ ds 360)))  ;;;;;;;;;;;圆弧总长
  46. (setq xds (/ (* d 360) (* 2 pi r)))
  47. (setq xhd (* pi (/ xds 180)))
  48. (if (>= (- d) (/ zc 2.0))  (exit))
  49. (setq e1 (subst (cons 50 (- p0 xhd)) (assoc 50 e1) e1))
  50. (setq e1 (subst (cons 51 (+ pn xhd)) (assoc 51 e1) e1))
  51. (entmod e1)
  52. )
  53. )
  54. (setq i (+ i 1))
  55. )
  56. )
  57. (setvar "osmode" os)
  58. (princ)
  59. )

发表于 2016-3-22 09:11:57 | 显示全部楼层
  1. (defun c:tt()
  2. (setq os (getvar "osmode"))
  3. (setvar "osmode" 0)
  4. (princ "\n请选择对象:")
  5. (setq ss(ssget '((0 . "LINE,ARC"))))
  6. (initget "T" 1)
  7. (setq d (getreal "\n请输入每边变化值/或 <总长T>: "))
  8. (if (= d "T") (progn
  9.   (setq td (getreal "\n请输入改后总长: "))
  10.   ;...
  11. ) (progn
  12. (if (/= ss nil)
  13.   (repeat (setq i (sslength ss))
  14.    (setq e1 (entget(ssname ss (setq i (1- i)))))
  15.    (setq TS (cdr(assoc 0 e1)))
  16.    (if (= TS "LINE") (progn ;直线
  17.     (setq pt1 (cdr (assoc 10 e1)))
  18.     (setq ptt1 (cdr (assoc 11 e1)))
  19.     (setq z0 (mapcar '+ px1 '(0 0)))
  20.     (setq z2 (mapcar '+ ptt1 '(0 0)))
  21. ;    (setq z1 (mapcar '(lambda (a b) (/ (+ a b) 2)) z0 z1))
  22.     (setq zc (distance pt1 ptt1))  ;;;;;;;;;;;直线总长
  23.     (if (> (- d) (/ zc 2.0)) (exit))
  24.     (setq jd (angle z0 z2))
  25.     (setq b0 (polar z0 (+ pi jd) d))
  26.     (setq bn (polar z2 jd d))
  27.     (setq e1 (subst (cons 10 b0) (assoc 10 e1) e1))
  28.     (entmod (subst (cons 11 bn) (assoc 11 e1) e1))
  29.    ) (progn  ;圆弧
  30.     (setq o (cdr (assoc 10 e1))
  31.           r (cdr (assoc 40 e1))
  32.           p0 (cdr (assoc 50 e1))
  33.           pn (cdr (assoc 51 e1))
  34.           hd0 (- pn p0)
  35.           zdhd (+ p0 (/ hd0 2.0)))
  36.     (if (>= d (* (/ (abs (/ hd0 2.0)) pi) pi r)) (exit))
  37.     (setq ds (atof (angtos hd0 0 4))
  38.           zc (* 2 pi r (/ ds 360)))  ;;;;;;;;;;;圆弧总长
  39.     (setq xds (/ (* d 360) (* 2 pi r)))
  40.     (setq xhd (* pi (/ xds 180)))
  41.     (if (>= (- d) (/ zc 2.0))  (exit))
  42.     (setq e1 (subst (cons 50 (- p0 xhd)) (assoc 50 e1) e1))
  43.     (entmod (subst (cons 51 (+ pn xhd)) (assoc 51 e1) e1))
  44.    ))
  45.   )
  46. )
  47. ))
  48. (setvar "osmode" os)
  49. (princ)
  50. )
发表于 2020-3-3 20:55:41 | 显示全部楼层
请问楼主的问题解决了吗?能否请教下啊?
发表于 2020-7-22 13:18:35 | 显示全部楼层
谢谢楼主的热心共享!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 03:09 , Processed in 0.141950 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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