明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6222|回复: 23

[已解答] A,B,C三个值在命令行中输入,可以是输入A回车, 输入B回车, 输入C回车,用lsp...

[复制链接]
发表于 2014-3-27 09:32:51 | 显示全部楼层 |阅读模式
本帖最后由 李青松 于 2014-3-27 09:40 编辑

1,下面的矩形是多段线,上面的线条是是单独的三根线
2,上下距离是500,这个值在lsp程序中预先设定,可以修改。
3,A,B,C三个值在命令行中输入,可以是输入A回车,输入B回车,输入C回车.

4,上面那个图的宽度是下面那个图的宽度的一半,也就是A/2.两个图的
最右边是在一条垂直线上。
5,用lsp程序实现,一次性把上下两个图都画出来。尺寸标注不用画。
6,因为在工作经常用到,所以想用程序来实现,有谁可以帮到我。

本帖子中包含更多资源

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

x
发表于 2014-3-27 14:26:40 | 显示全部楼层
本帖最后由 xyp1964 于 2014-3-27 14:27 编辑

  1. ;; 伪源码需要e派工具箱(XCAD)的支持
  2. (defun c:tt (/ ilst)
  3.   (xyp-cmdla0)
  4.   (defun main-pro (/ p1 p2 p3 p4 p5 p6 s1 s2)
  5.     (while (setq p1 (getpoint "\n右下角基点<退出>: "))
  6.       (setq p2 (xyp-Pt2XY p1 d1 d2)
  7.             p3 (xyp-Pt2Y p2 500)
  8.             p4 (xyp-Pt2X p3 (* d1 -0.5))
  9.             p5 (xyp-Pt2Y p3 d3)
  10.             p6 (xyp-Pt2X p5 (* d1 -0.5))
  11.             s1 (xyp-rectang p1 p2)
  12.             s2 (xyp-Pline (list p4 p3 p5 p6) nil)
  13.       )
  14.     )
  15.   )
  16.   (xyp-initSet '(d1 d2 d3) '(1000 500 600))
  17.   (setq ilst '(("" "参数" ":boxed_column{")
  18.                ("d1" "A" "int" "8")
  19.                ("d2" "B" "int" "8")
  20.                ("d3" "C" "int" "8")
  21.                "spacer;"
  22.                "}"
  23.               )
  24.   )
  25.   (if (= (xyp-Dcl-Init Ilst "【ABC】" t) 1)(main-pro))
  26.   (xyp-cmdla1)
  27. )

本帖子中包含更多资源

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

x
发表于 2014-3-27 15:15:27 | 显示全部楼层
為了這小玩意還需要下載好大的工具箱啊

点评

瞎玩,别当真  发表于 2014-3-27 15:16
发表于 2014-3-27 18:25:57 | 显示全部楼层
lsjj 发表于 2014-3-27 15:15
為了這小玩意還需要下載好大的工具箱啊

经过技术分析,品茗新秀与李青松系同一人

点评

错  发表于 2014-3-28 09:12
发表于 2014-3-27 19:05:26 | 显示全部楼层
就是一个天天要程序的鸟人!别理他就是!

点评

就你不理,  发表于 2014-3-28 13:36
发表于 2014-3-27 21:19:57 | 显示全部楼层
  1. (defun c:tt()
  2.   (setq p 1)
  3.   (setq ma 1000 mb 500 mc 600)
  4.   (while (= p 1)
  5.     (setq A (getreal (strcat "\n请输入A的值" "<" (rtos ma 2 2) ">")))
  6.     (cond
  7.       ((= A nil) (setq A ma))
  8.     )
  9.     (while (<= A 0)
  10.      (progn
  11.       (print "输入错误,请重新输入")
  12.       (setq A (getreal (strcat "\n请输入A的值" "<" (rtos ma 2 2) ">")))
  13.      )
  14.     )
  15.     (setq B (getreal (strcat "\n请输入B的值" "<" (rtos mb 2 2) ">")))
  16.     (cond
  17.       ((= B nil) (setq B mb))
  18.     )
  19.     (while (<= B 0)
  20.      (progn
  21.       (print "输入错误,请重新输入")
  22.       (setq B (getreal (strcat "\n请输入B的值" "<" (rtos mb 2 2) ">")))
  23.      )
  24.     )
  25.     (setq C (getreal (strcat "\n请输入C的值" "<" (rtos mc 2 2) ">")))
  26.     (cond
  27.       ((= C nil) (setq C mc))
  28.     )
  29.     (while (<= C 0)
  30.      (progn
  31.       (print "输入错误,请重新输入")
  32.       (setq C (getreal (strcat "\n请输入C的值" "<" (rtos mc 2 2) ">")))
  33.      )
  34.     )
  35.     (setq pt (getpoint "\n 请指定插入点:"))
  36.     (setq pb (polar pt 0 A) pc (polar pb (/ pi 2.0) B) pd (polar pc pi A))
  37.     (setq pe (polar pb (/ pi 2.0) (+ B 500.0)) pff (polar pb (/ pi 2.0) (+ B 500.0 C)) pg (polar pff pi (/ A 2.0)) ph (polar pe pi (/ A 2.0)))
  38.     (command "PLINE" pt pb pc pd "c")
  39.     (command "LINE" ph pe pff pg "")
  40.     (setq ma A mb B mc C)
  41.     (princ)
  42.   )
  43. )


实验了一下,不知道为啥,有时候画出来线是歪的,但大多时候又是对的,不知道为什么,你借鉴下就成,呵呵,大神莫笑!
发表于 2014-3-27 21:25:35 | 显示全部楼层
关了捕捉再试试
 楼主| 发表于 2014-3-28 09:17:39 | 显示全部楼层
重慶崽兒 发表于 2014-3-27 21:19
实验了一下,不知道为啥,有时候画出来线是歪的,但大多时候又是对的,不知道为什么,你借鉴下就成,呵 ...

运行一次就行了,运行完一次不要自动运行第2次,改一下就ok了,谢谢
发表于 2014-3-28 21:58:32 | 显示全部楼层
Andyhon 发表于 2014-3-27 21:25
关了捕捉再试试

呵呵  好像还真是,呵呵,不知道什么原因啊,还请大大解答下
发表于 2014-3-28 22:20:43 | 显示全部楼层
李青松 发表于 2014-3-28 09:17
运行一次就行了,运行完一次不要自动运行第2次,改一下就ok了,谢谢

  1. (defun c:tt()
  2.   (setq p 1)
  3.   (setq ma 1000 mb 500 mc 600)
  4.     (setq A (getreal (strcat "\n请输入A的值" "<" (rtos ma 2 2) ">")))
  5.     (cond
  6.       ((= A nil) (setq A ma))
  7.     )
  8.     (while (<= A 0)
  9.      (progn
  10.       (print "输入错误,请重新输入")
  11.       (setq A (getreal (strcat "\n请输入A的值" "<" (rtos ma 2 2) ">")))
  12.      )
  13.     )
  14.     (setq B (getreal (strcat "\n请输入B的值" "<" (rtos mb 2 2) ">")))
  15.     (cond
  16.       ((= B nil) (setq B mb))
  17.     )
  18.     (while (<= B 0)
  19.      (progn
  20.       (print "输入错误,请重新输入")
  21.       (setq B (getreal (strcat "\n请输入B的值" "<" (rtos mb 2 2) ">")))
  22.      )
  23.     )
  24.     (setq C (getreal (strcat "\n请输入C的值" "<" (rtos mc 2 2) ">")))
  25.     (cond
  26.       ((= C nil) (setq C mc))
  27.     )
  28.     (while (<= C 0)
  29.      (progn
  30.       (print "输入错误,请重新输入")
  31.       (setq C (getreal (strcat "\n请输入C的值" "<" (rtos mc 2 2) ">")))
  32.      )
  33.     )
  34.     (while (= p 1)
  35.       (setq pt (getpoint "\n 请指定插入点:"))
  36.       (setq pb (polar pt 0 A) pc (polar pb (/ pi 2.0) B) pd (polar pc pi A))
  37.       (setq pe (polar pb (/ pi 2.0) (+ B 500.0)) pff (polar pb (/ pi 2.0) (+ B 500.0 C)) pg (polar pff pi (/ A 2.0)) ph (polar pe pi (/ A 2.0)))
  38.       (command "PLINE" pt pb pc pd "c")
  39.       (command "LINE" ph pe pff pg "")
  40.       (setq ma A mb B mc C)
  41.       (princ)
  42.     )  
  43. )

那啥,把那个while循环放在下面就OK了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 15:59 , Processed in 0.212097 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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