机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3125|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?  `. g9 e6 N% Z* i8 a

8 v4 ~% w7 c8 d, _4 p3 n% B" I6 S! i8 ?; a" w

本帖子中包含更多资源

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

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()
# u. B3 R6 \! s8 V9 c$ K    7 K1 B0 Y7 s- u! M0 `
    Dim line2 As AcadLine
7 c  H- a! [, @, `% A    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"
( Z& H( i5 Y: P' q1 T8 s3 a    ) T% k" Q8 |& U4 P. W
    Dim p17 n1 J! N' q3 O8 W3 u# R9 m
    p1 = line2.startPoint/ H. L! ~) Z3 a; D3 \7 ]6 B7 d
    Dim p2, l  [$ V- b8 O7 N9 e7 [  k
    p2 = line2.endPoint
0 [# c% k* z$ g% U0 h3 R' h, u   
$ w, S9 \- e" o    Dim angle2 As Double
$ W; s* T! `4 v3 q    angle2 = line2.angle
; ?; ?$ X" E, d3 D6 M9 R2 b; W6 |3 {
    Dim pts1(0 To 7) As Double
# v" _9 _( W% U1 _! f! K    Dim pts2(0 To 7) As Double) q: o1 G% }) [: Y
      . X5 o% ?' f1 A/ _
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2). {9 d$ H1 w1 L9 s
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)+ U& h+ q6 }, X, _' ~3 z$ v
    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)  \( \" `$ q8 T% P- r
    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)
: a- E# N+ X/ p  E' ^& _9 M   
8 ^. o7 ^) V* i2 J3 |    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)" |7 o) p9 r+ D  b" G
    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
; f; o4 c4 Y6 Z7 X* Z( x+ E    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)# T, ~4 J& F' J1 t. @, j
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)/ w. U" _# }# ]# m
   
8 t; V/ u; v/ }+ J    Dim pl0 As AcadLWPolyline/ K- P3 Z4 T* q1 _
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)5 n7 x/ L" X" M- a
    Dim pl1 As AcadLWPolyline* m7 J: M9 m! }
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)0 C" V+ f( t2 p* B) \
5 ]( ^/ W  X# }3 ?& U- X" c. q
    pl0.Closed = True
: f: q/ r" }2 ^, {% I' R    pl1.Closed = True) ]& g; l1 D' G( }2 _; x3 {
0 j% v1 [% X: |% b
End Sub

点评

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 21:18 , Processed in 0.068870 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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