找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3250|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?+ U3 X% }. F  U! A9 [2 a
' J5 M1 ~8 S0 i" P/ s
' J' s( l: P" b" |, B0 \

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 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()
5 S4 M# r: n" ?& m% v   
! ?- G3 L& q8 n: `3 @( I, S- _8 h- C    Dim line2 As AcadLine5 s  Z+ b% ~6 ?9 I
    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"6 A( D: P/ Y9 s$ u; b
    , Z0 X) A+ \* ^
    Dim p1
: O: j2 s; k6 \% o  n( ~    p1 = line2.startPoint, t( ]0 v0 I( z2 c- F8 G: ]! p# K
    Dim p29 }7 z% C; J$ E( P4 Z
    p2 = line2.endPoint
" x. L3 [# ^; A: @   
  C4 [, e3 R$ h  B# z    Dim angle2 As Double
0 N/ @/ Y, c1 G: d3 f    angle2 = line2.angle! k7 v. t+ H! |7 m: ~  z! u3 \
; P4 V; {) r2 w, }4 W% J
    Dim pts1(0 To 7) As Double+ Z2 S# q. N& t5 V1 ?
    Dim pts2(0 To 7) As Double
4 G3 z! C; H' k# v' S& U      9 K2 G9 `* q! }3 Z
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)
5 i- [2 n6 T+ o  R- e  {    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2); l4 }+ g6 O) \) k: k, v3 \
    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)7 Q% P# ~# e9 K: H9 t
    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)
7 j- r4 ]; h$ k    ! @2 v& B2 r& h5 D. t6 d5 I- Z
    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)+ X3 c0 g- x0 d6 P& O. Q5 }% W
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2): O: O' [1 @' P( E
    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)4 x# |) J  p! |, ~5 y0 F; S
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
# r5 Q4 b& f, |( K. k, s   
: Q& S! K; N- b( A2 a- e    Dim pl0 As AcadLWPolyline
  D  M, h/ Q4 h6 O0 x% c2 {5 _    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)
) @* s  Z+ S0 ~. p) }    Dim pl1 As AcadLWPolyline' |/ B8 l$ T$ k7 k7 `- _) z
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)! A. b1 H6 I5 R5 Z1 f
' I9 s8 [- A% c1 Y
    pl0.Closed = True# C# ~( ]- f$ ]9 k0 E, X2 o6 _( D- M
    pl1.Closed = True) D3 w) m! m4 M5 T! D

; g: r( i' }: v! {- x4 N3 |End Sub

点评

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

本版积分规则

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

GMT+8, 2025-7-9 14:49 , Processed in 0.093538 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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