找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3405|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?! b0 A/ `; {3 e2 S' ]- U, s
4 H/ I- W$ A; M: Q0 R  A' e
; N1 @2 I: F0 |& j! J* d  R- Y

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 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()6 i+ r9 M+ i* r  F9 v$ t
   
0 U3 v0 Q1 v2 I    Dim line2 As AcadLine% I) M. w5 p( q. F
    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"; V6 a+ G$ F3 I4 m5 I
   
) i2 C5 {  G0 A9 t0 w5 u% K    Dim p1
& \6 u' |8 T7 j' Z0 C    p1 = line2.startPoint
3 i' D; z) x- Z3 D    Dim p2
, @: x3 D( B) M$ ?3 ^4 E: d  b    p2 = line2.endPoint
( y  v% P8 z4 b, [. L# @    : f0 _- j7 @+ D% m6 L
    Dim angle2 As Double
& B8 G' Y! g8 g0 V    angle2 = line2.angle
% h# T/ R/ _# Z- B5 F* _# d$ s% I3 i2 Q
    Dim pts1(0 To 7) As Double
) L: v6 R; i! d    Dim pts2(0 To 7) As Double* n+ l* |, z; r* g
      . @& X. u3 k' J" f" @* }8 M) P
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)6 ?- B% E9 E# A) S8 Y3 D6 V
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)
7 J3 l& Y5 c0 [% n+ d    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)
+ }1 X* [, x6 c& Q9 {. u; L    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)7 f% m% C0 k+ g, U0 A) V
    " K( G: m6 a( a4 D4 B% R4 r8 \7 r  A
    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)& ], w8 }' O% e2 T
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
( \0 P( t  H+ F& x& l* X* M    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)
. [: m& I3 }* W2 `    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2): M$ @8 m# @+ \/ \5 }, g  K
    , L+ |; ]" ?- N$ X3 E
    Dim pl0 As AcadLWPolyline1 t( V% G! K8 Y
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)- w8 g: _# ?4 e/ |
    Dim pl1 As AcadLWPolyline
$ ^+ y; p9 n: d& @% J, B9 y    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)
( W& @2 h! I: U# o
5 C) {" p6 T3 q, q# B    pl0.Closed = True
; C% I0 L: ?; a) b+ x0 j    pl1.Closed = True
% @+ A, _$ T$ O, h6 J. y7 Y9 w
3 H4 }1 f/ `, c4 t3 i$ [- UEnd Sub

点评

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

本版积分规则

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

GMT+8, 2025-10-17 21:51 , Processed in 0.063653 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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