乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 16|回复: 16

[编程交流] 具有用户输入的多行

[复制链接]

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:31:54 | 显示全部楼层 |阅读模式
大家好。。。谁能帮我发展一个Lisp程序。。。
我需要用用户输入绘制多条线
 
例如长度、行数、偏移大小
 
还需要画垂直线两端1/16英寸内。。。
 
我附上图片作为例子
 
提前感谢。。。。
163157hhn08knhgbah8kg5.jpg
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 15:38:34 | 显示全部楼层
我已经将你的帖子转移到AutoLISP、Visual LISP和DCL论坛,请在最相关的论坛上发布。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:40:57 | 显示全部楼层
这听起来像是动态块的任务。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 15:46:51 | 显示全部楼层
基点应位于何处?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:48:13 | 显示全部楼层
我将尝试查找,以前使用50,4,-25的简单输入做过类似的事情
50=长度
4是必需的数字
-25右/左偏移为+/-
 
我会继续寻找,找到同样的想法。
  1. ; copy multiple objects along x or y axis
  2. ; use 2x40 etc
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:53:17 | 显示全部楼层
看看我在这里的帖子http://www.cadtutor.net/forum/showthread.php?84919-绘制双多段线/第3页
 
也许从头开始写会更容易。
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:57:42 | 显示全部楼层
0,0或任何不重要的地方
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:59:29 | 显示全部楼层
 
0,0或任何不重要的地方
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:05:02 | 显示全部楼层
干得好:
 
  1. (defun C:test ( / p1 p2 off n a d f p )
  2. (and
  3.    (cond
  4.      ( (and *MtpLines* (setq p1 (getpoint "\nSpecify base point <new line>: ")))
  5.        (mapcar '(lambda (x) (set x (cdr (assoc x *MtpLines*)))) '(d a))
  6.        (setq p2 (polar p1 (- a (* 0.5 PI)) d))
  7.      )
  8.      (
  9.        (and
  10.          (setq p1 (getpoint "\nSpecify line's length: "))
  11.          (setq p2 (getpoint "\nSpecify line's length: " p1))
  12.        )
  13.      )
  14.    ); cond
  15.    (not (grdraw p1 p2 1 1))
  16.    
  17.    (setq off (cond ( (progn (initget 6) (getdist (strcat "\nSpecify offset " (if (setq off (cdr (assoc 'off *MtpLines*))) (strcat "<" (rtos off 2 15) ">") "") ": "))) ) ( off )))
  18.    (setq n (cond ( (progn (initget 6) (getint (strcat "\nSpecify number of lines " (if (setq n (cdr (assoc 'n *MtpLines*))) (strcat "<" (itoa n) ">") "") ": "))) ) ( n )))
  19.    
  20.    (or a (setq a (+ (angle p1 p2) (* 0.5 PI))))
  21.    (or d (setq d (distance p1 p2)))
  22.    (setq f '((p a d) (entmakex (list '(0 . "LINE") (cons 10 p) (cons 11 (polar p a d))))))
  23.    (setq p p1)
  24.    (progn
  25.      (redraw)
  26.      (repeat n
  27.        (f p (angle p1 p2) d)
  28.        (setq p (polar p a off))
  29.      )
  30.      (
  31.        '(( / ed pt1 pt2 dst )
  32.          (setq ed 6.)
  33.          (setq pt1 (polar p1 a (- ed)))
  34.          (setq pt2 (polar p2 a (- ed)))
  35.          (setq dst (+ (- (distance p1 p) off) (* 2. ed)))
  36.          (f (polar pt1 (angle p1 p2) ed) a dst )
  37.          (f (polar pt2 (angle p1 p2) (- ed)) a dst )
  38.        )
  39.      )
  40.      (setq *MtpLines* (mapcar '(lambda (x) (cons x (eval x))) '(d a off n)))
  41.    ); progn
  42. ); and
  43. (princ)
  44. ); defun
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:07:28 | 显示全部楼层
谢谢你的代码。。。它工作了一些什么,但它有点混乱,并没有像我预期的那样工作。。您能按如下方式更改用户输入,并将起点定义为自动@0,0和水平长度吗
 
1.输入板条的总长度(ex 100”)
2.输入垂直偏移长度(两端的两条垂直线)(例如0.25”)
3.输入水平偏移距离(例如5”)
4.输入要偏移的行数(例如10)
 
我已附上上述值的示例草图。。。希望这个信息足够好
 
再次感谢
163159e7tia0ntwt4v3s48.jpg
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:05 , Processed in 0.593401 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表