找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3304|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?
# B' J3 e% ^; H2 b$ \1 X$ {/ E; p2 O3 i2 Y' c: v9 e" t3 g* m0 s
7 u* V% I2 }5 D" C6 z

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 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()- u- Q5 \' H0 f1 u. |9 w1 i& o1 q
   
) ^' V- M7 V9 l  f4 g    Dim line2 As AcadLine/ I$ |9 R8 o# n3 E+ ]* {3 Y4 w
    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"/ q. o5 ]6 k/ q* d, l, _9 A/ F
   
: d/ E6 m5 Y7 K6 z6 Q* y. q, n    Dim p1/ ~' Q/ }* Z: q% z) h
    p1 = line2.startPoint
6 u! S$ m) E2 _  G8 n$ w. Q" s    Dim p2: n6 H. `4 U1 D5 S* C+ q% s6 a
    p2 = line2.endPoint) R, ^! s5 |) K9 y3 ?5 E
   
. g8 }0 v' V1 m* B  m    Dim angle2 As Double1 v3 J/ b1 }9 H9 G: s2 T& [
    angle2 = line2.angle6 Z8 T# o5 l1 a+ i/ B; t

. n% s$ \6 }- i' C$ q% S- A    Dim pts1(0 To 7) As Double* h" w$ F. o, X7 ^; t) v( a
    Dim pts2(0 To 7) As Double. ^8 q! Y  a1 g9 K
      " \  x, A. {! @9 d& Q: _
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)0 l" y! p* o7 B/ \9 U
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)
$ m' k: L7 H/ w2 v2 o    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
6 x0 Y0 F9 p; c1 D" F    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)* N( ?& V* T  M3 ^# s( ]" |
   
+ W/ ?1 D- }3 l* S2 e    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)) |& l9 }- c  |$ |
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)3 I8 W- a: Q5 l7 V* C( M6 J  N: r6 |
    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)
" ~5 N% N% z6 j2 R, Z    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
  C# m9 I0 t) ^/ c      P: o# T% B, P4 D7 g' Y
    Dim pl0 As AcadLWPolyline' M% r$ M3 U1 [9 b& r
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)4 M5 E- X. E. W5 @
    Dim pl1 As AcadLWPolyline/ f8 T  q; p' b1 s2 X9 b
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2). S* z% x- v' E7 `- a- j' l

1 u( E- W. J& h: X' u    pl0.Closed = True( W" z" j- `" t  \; i7 z9 G0 R
    pl1.Closed = True1 Y% {! h1 C* @
6 s4 _* e7 c& j$ [8 b& m5 ?
End Sub

点评

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

本版积分规则

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

GMT+8, 2025-8-25 04:59 , Processed in 0.073579 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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