乐筑天下

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

[编程交流] Lisp绘制箭头

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:35:30 | 显示全部楼层 |阅读模式
大家好。我不熟悉AutoCAD和Autolisp。现在,我想做一个lisp例程来绘制一个箭头,如下图所示
093534b2uzppqdcffp2qoh.jpg
 
A和B是两个特定的点,m=A和B之间距离的1/3。有人知道如何制作这个lisp例程吗?
提前感谢
对不起我的英语
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:41:48 | 显示全部楼层
可以使用这些特性制作单独的标注样式来绘制它,而不是绘制例程。
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:45:03 | 显示全部楼层
我是amatuer,也许应该置身事外。但我想回复一个请求只是为了体验一下。
 
  1. (defun c:test ( / a b c wid)
  2. (setq a (getpoint "Pick head of arrow...\n")
  3. b (getpoint a "Pick tail of arrow...\n")
  4. c (polar a (angle a b) (/ (distance a b) 3.0))
  5. wid (/ (distance a b) 6.0)
  6. )
  7. (entmake
  8.    (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(8 . "0")'(62 . 0)'(6 . "ByBlock")'(100 . "AcDbPolyline")'(90 . 2)'(70 . 0)'(38 . 0.0)'(39 . 0.0)(cons 10 a)
  9.   '(40 . 0.0)(cons 41 wid)'(42 . 0.0)(cons 10 c)'(40 . 0.0)'(41 . 0.0)'(42 . 0.0)'(210 0.0 0.0 1.0)))
  10. (entmake
  11.    (list '(0 . "LINE")'(100 . "AcDbEntity")'(8 . "0")'(62 . 0)'(6 . "ByBlock")'(100 . "AcDbLine")(cons 10 c)(cons 11 b)'(210 0.0 0.0 1.0)))
  12. (princ)
  13. )

 
我通过创造最奇怪的解决方案来逗自己开心。事实上,别理我。很抱歉
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:47:31 | 显示全部楼层
@寻求和平:这是一个很好的解决方案;只有一个建议-可以将箭头作为一个实体,我的意思是将尾部添加为多段线的第二段,而不是单独的实体。
 
当做
米尔恰
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:51:16 | 显示全部楼层
 
  1. (defun  c:test (/ a b c wid)
  2. [color=blue](vl-load-com)[/color]
  3. (setq
  4.    a   (getpoint "Pick head of arrow...\n")
  5.    b   (getpoint a "Pick tail of arrow...\n")
  6.    c   (polar a (angle a b) (/ (distance a b) 3.0))
  7.    wid (/ (distance a b) 6.0)
  8.    )
  9. [color=blue](vla-setWidth[/color]
  10. [color=blue]    (vlax-ename->vla-object[/color]
  11. [color=blue]      (entmakex[/color]
  12. [color=blue]        (append[/color]
  13. [color=blue]          (list[/color]
  14. [color=blue]            (cons 0 "LWPOLYLINE")[/color]
  15. [color=blue]            (cons 100 "AcDbEntity")[/color]
  16. [color=blue]            (cons 100 "AcDbPolyline")[/color]
  17. [color=blue]            (cons 90 3)[/color]
  18. [color=blue]            )[/color]
  19. [color=blue]          (mapcar[/color]
  20. [color=blue]            (function (lambda (p) (cons 10 (trans p 1 0))))[/color]
  21. [color=blue]            (list a c b)[/color]
  22. [color=blue]            )[/color]
  23. [color=blue]          )[/color]
  24. [color=blue]        )[/color]
  25. [color=blue]      )[/color]
  26. [color=blue]    0[/color]
  27. [color=blue]    0.0[/color]
  28. [color=blue]    wid[/color]
  29. [color=blue]    )[/color]
  30. (princ)
  31. )
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:52:29 | 显示全部楼层
谢谢大家
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:56:07 | 显示全部楼层
另一个:
 
pBe:为什么转换为VLA对象?
回复

使用道具 举报

7

主题

143

帖子

136

银币

初来乍到

Rank: 1

铜币
36
发表于 2022-7-6 08:58:22 | 显示全部楼层
箭头是实心的吗?在这种情况下,我认为需要绘制两个不同的实体。哦,等等,我想李是用两段多段线做的。代码41是多段线末端宽度吗?
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:02:42 | 显示全部楼层
我在想,他可以接受我所做的,并阻止或组合它。我忘了你可以像Lee那样做,因为我使用了顶部建议的简单箭头的尺寸样式。关于这个问题,我使用的一个复杂箭头(Lisp)是样条曲线尖端的一个头。我有一个例程,需要4个点,创建样条曲线,将头部作为块插入,然后将其分组。这是我几年前写的。有没有一种方法可以只用一个简单的实体,而不用插入块和分组?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:04:05 | 显示全部楼层
 
可以根据需要使用引线设置来调整设置。
093536mhahaehed9lbedn2.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:10 , Processed in 0.405579 second(s), 75 queries .

© 2020-2025 乐筑天下

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