机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2557|回复: 7

请教,怎样才能用autolisp在直线两端各加一个矩形?

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?
' I; o5 }1 x) U; G0 J6 j4 \, h. r$ W" B0 M, Z- B
( \! l( Y9 R! b: \

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2024-2-8 00:13:47 | 显示全部楼层
你是直线先画出,再加矩形,还是画直线的同时,加上矩形,一次完成?

点评

先手动画出直线,然后运行程序提示选择哪一条直线,鼠标手动点击选择直线,然后机器自己画出矩形。  发表于 2024-2-8 11:13
回复 支持 反对

使用道具 举报

发表于 2024-2-8 18:15:14 | 显示全部楼层
我用VBA实现。
回复 支持 反对

使用道具 举报

发表于 2024-2-8 18:17:12 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2024-2-8 18:18:18 | 显示全部楼层
Sub creatEndRect()  V4 \  G: ~+ _; P
    # ]4 |  G: \; \4 j% E8 E4 G$ H
    Dim line2 As AcadLine
" u2 r1 b) u" h; s    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"; `1 t8 ~& u3 ]" H! n% Q+ R+ {5 M
   
% P0 K( s2 R7 R2 ~2 ^3 F- n    Dim p16 V. x- a  K/ u6 u; P
    p1 = line2.startPoint
$ v/ n, [! k( ?, s    Dim p2
1 p' h" H* [/ D/ ?1 O; i* N    p2 = line2.endPoint
0 e6 G7 ]+ [4 x- _$ C! C    4 H- L* [. X5 C0 |- [# _; @4 B' L
    Dim angle2 As Double5 ]2 V- N  s7 c  Y
    angle2 = line2.angle0 w0 d. g) U, P0 f6 O

1 d1 T! p4 K" K0 S& ]    Dim pts1(0 To 7) As Double
+ e, }: L+ o( R! P/ l, F    Dim pts2(0 To 7) As Double# P- K) x, h2 c  h. }
      
6 _  C1 U8 c' L; Q; K( T% D+ J' t    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)4 y# N4 n4 Y+ Y' v- x1 r3 t
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)1 W- ]5 C8 f- [. m5 D
    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
; `5 E5 a' p# d0 I' R0 S    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)
* K9 J4 Y5 h# b! n9 n1 a    ! S8 o8 w/ d" s3 F8 S# ^
    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)
# i) S" x; H$ a0 I& K    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
- s. L5 R7 @' C6 \0 r8 k    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2); ?* B/ G) G; H, g6 S# \
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
; Y/ W' w$ Z9 b9 ]    " a1 s8 E# L: c
    Dim pl0 As AcadLWPolyline& a% D4 y2 F9 q; F8 Z
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)
6 X1 S; V: v$ r2 b3 n; X/ O    Dim pl1 As AcadLWPolyline/ D0 Z9 f2 w$ g* V, w2 r2 _* k; F
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)
0 }5 y6 u6 D4 k" P% e$ f& |; n. G3 ^6 z8 q
    pl0.Closed = True
; I7 W  V* M/ t    pl1.Closed = True  W* c+ p$ f# l; Y8 p( a

, t8 b. A) U9 t1 A( f9 a/ FEnd Sub

点评

这个管用,谢谢你哦!  发表于 2024-2-11 19:48
回复 支持 反对

使用道具 举报

发表于 2024-2-12 08:21:21 | 显示全部楼层
不客气!管用就好!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-4-28 00:49 , Processed in 0.055949 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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