找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3204|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?
3 L7 f# T$ U& Y# B/ ~/ L
, d+ J' Q4 b. C. y7 R3 V  H7 t4 d

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

点评

先手动画出直线,然后运行程序提示选择哪一条直线,鼠标手动点击选择直线,然后机器自己画出矩形。  发表于 2024-2-8 11:13
发表于 2024-2-8 18:15:14 | 显示全部楼层
我用VBA实现。
发表于 2024-2-8 18:17:12 | 显示全部楼层

本帖子中包含更多资源

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

×
发表于 2024-2-8 18:18:18 | 显示全部楼层
Sub creatEndRect()
! N/ E7 o+ }& i0 l" e/ t* g- G; ?   
) f6 V- [& Y; \0 G    Dim line2 As AcadLine
- A; A5 Z2 H4 K/ G) C/ H8 n8 l9 q    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:") |, s: J( ^, N+ E+ G* ?
   
# E, E8 h# T/ l! ~    Dim p1, V% g. }- V3 |
    p1 = line2.startPoint
; `# D- \9 d: q    Dim p2
& K4 y& O/ k& ]- _1 l: V    p2 = line2.endPoint7 m3 S- d9 G1 g0 r3 n: i2 s
    - p- ]+ I5 U& z+ E( D2 f1 d, f0 i
    Dim angle2 As Double
5 i- y  J8 _+ R- o$ |    angle2 = line2.angle/ @- V: v5 e. r5 Q: p
& `2 C8 W0 m) L  j' @
    Dim pts1(0 To 7) As Double/ @; N5 _# K" T1 I3 M7 h$ C7 ^: M
    Dim pts2(0 To 7) As Double
9 ^- {4 S/ z2 `! H4 H6 g" Z) _2 S      
: H2 J8 `0 c+ j$ R& f4 D8 L    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)$ M5 A1 J2 u  E/ ]1 Q: B2 P0 I
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)
$ Z/ W% M: `) s& [2 @1 n% v2 B    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
+ ], c  h- ^  ?6 [& k    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)
, p$ l) g3 k9 L8 |2 L  Y, t& c   
9 H5 l1 i) @9 r% b    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)! W7 z; P6 c  I$ |9 y
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)' Z% s# i& j: a+ K/ u/ s5 V
    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)5 k/ R% d" t2 ]  f
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
5 R9 D/ V/ [  Z7 H  @# K   
4 L4 b' G6 l( |" p4 T4 ]    Dim pl0 As AcadLWPolyline
1 t; ]& h' M2 Z  n    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)
! ~# P3 x$ t1 S+ `0 g3 s6 w    Dim pl1 As AcadLWPolyline( I0 k' R( {9 i! B
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2), F/ g4 ^1 s; p. T
# y/ {' }0 _6 [
    pl0.Closed = True
1 d/ H1 |: t. \7 y9 F( L    pl1.Closed = True
- x% `, X! X2 K! z3 _
/ v1 q$ \9 o& o& s5 MEnd Sub

点评

这个管用,谢谢你哦!  发表于 2024-2-11 19:48
发表于 2024-2-12 08:21:21 | 显示全部楼层
不客气!管用就好!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-17 00:18 , Processed in 0.076330 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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