乐筑天下

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

[编程交流] lisp在同一角度上画线

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:22:59 | 显示全部楼层 |阅读模式
大家好,
有人有lisp吗?或者可以帮我做一个lisp,它可以根据所选直线的角度绘制直线?
 
示例:我有一条45度的直线
我在这行的末尾有文字
我想选择一条线,并有一条预定的线
根据图形比例在文本后绘制
 
请参阅所附图片以获得更好的说明。
 
非常感谢。
132304qy7xbjbb4j9njn8q.jpg
回复

使用道具 举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:31:42 | 显示全部楼层
有人能帮忙吗?
回复

使用道具 举报

1

主题

50

帖子

49

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:33:18 | 显示全部楼层
打开OSNAP扩展怎么样?
或者在这个(特殊?)外壳极角45?
回复

使用道具 举报

14

主题

54

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:38:44 | 显示全部楼层
试试“斯纳邦”吧。。。
 
(setq draw_obj(entget(car(entsel)))
(命令“snapang”(cdr(assoc 10 draw\u obj))(cdr(assoc 11 draw\u obj)))
回复

使用道具 举报

1

主题

50

帖子

49

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:44:40 | 显示全部楼层
看这里,打开Extension和Parallel。
然后画出你的线,使用extension查找第一个点,将光标移动到第一条线上,然后移动到第二个点以获得平行Osnap。
132305rl6k3jamfr4m62y2.jpg
回复

使用道具 举报

dhl

10

主题

36

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2022-7-6 12:50:28 | 显示全部楼层
不确定这是不是你想要的,好好锻炼,但这一点也不差
 
  1. (defun c:angline (/ scale lne selpt pt1 pt2 dist1 dist2 bp bp2 rad)
  2. (setq scale (getvar "cannoscalevalue"))
  3. (setq lne (entsel "\nSelect line: "))
  4. (setq selpt (cadr lne))
  5. (setq pt1 (cdr (assoc 10 (entget (car lne)))))
  6. (setq pt2 (cdr (assoc 11 (entget (car lne)))))
  7. (setq dist1 (/ (distance pt1 pt2) 2))
  8. (setq dist2 (distance pt1 selpt))
  9. (if (< dist1 dist2)
  10.    (progn
  11.    (setq rad (angle pt1 pt2))
  12.    (setq bp (polar pt2 rad (* 1 (/ 1 scale))))
  13.    (setq bp2 (polar bp rad 1))
  14.    (command "_.line" bp bp2 "")
  15.    (command "_.lengthen" "dy" bp2  pause)
  16.    )
  17.    (progn
  18.    (setq rad (angle pt2 pt1))
  19.    (setq bp (polar pt1 rad (* 1 (/ 1 scale))))
  20.    (setq bp2 (polar bp rad 1))
  21.    (command "_.line" bp bp2 "")
  22.    (command "_.lengthen" "dy" bp2 pause "" "")
  23.    )
  24. )
  25. (princ)
  26. )

 
这可能就是你们许多人所说的“笨拙”代码,作为一名学习者,我很想了解这段代码,以及如何改进它
回复

使用道具 举报

1

主题

50

帖子

49

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:56:11 | 显示全部楼层
我在Acad 2010中尝试了你的代码。
它似乎又开始变长了。
也许你需要一个额外的(命令)来取消一切?
 
否则效果很好。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:58:59 | 显示全部楼层
 
我决不是一个专家,但我建议改进代码的两件事是entsel和PT的错误捕获,例如:
另一件事是,你很快就会注意到其他人的代码,你可以用setq分配多个变量,例如:
  1. (setq a 1 b 2
  2.    c 3)
设置a=1、b=2和c=3
希望这有点帮助。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 13:07:08 | 显示全部楼层
需要这个吗?
  1. 3

 
 
我在2009年试过,它对我有效。我认为我在2010年的最后一个命令中使用了太多的“”。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 13:11:42 | 显示全部楼层
非常感谢dhl和alanjt。
两者几乎做了完全相同的事情,唯一不同的是alanjt所做的程序,当你为额外的线选择起点时,你选择的点可以是任何地方,甚至可以不是原始线。
dhl制作的程序正是我想要的。
再次感谢大家的帮助和时间。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 06:22 , Processed in 0.724273 second(s), 75 queries .

© 2020-2025 乐筑天下

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