找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3206|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?( C/ o! X  z" d: u$ A

( z7 p5 k. s" Z& v# k6 d6 r2 ~9 O8 U7 W+ S" m3 e  w, }2 P" m6 x, W' G

本帖子中包含更多资源

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

×
回复

使用道具 举报

发表于 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()
$ U8 K  |' n% Z7 |    8 q0 v9 T1 o2 L
    Dim line2 As AcadLine" E5 }2 b  p3 @/ |4 z- a  e
    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"
4 H6 c/ b; V. g/ t$ u5 \+ G    , @# N/ O/ k! P
    Dim p1$ D$ d  t" t3 C2 T
    p1 = line2.startPoint; ~% D7 o9 F2 j7 s: h" K
    Dim p2
8 c4 l5 p: U4 L% @6 R; |  Y; _    p2 = line2.endPoint! s) B6 Q' e8 p4 l$ K0 q5 h
    . R1 u, ]5 \, Y& Q, p# Y8 l# a
    Dim angle2 As Double
' u+ Z+ C/ h! |2 B    angle2 = line2.angle8 h' i$ M5 Z% K! f
* H3 q+ c+ r5 N& F8 m. T
    Dim pts1(0 To 7) As Double
& e' @# ^/ e1 M2 g- A    Dim pts2(0 To 7) As Double5 {: c* Y' ^; A# |& H+ ?
      ) x/ N# C. Y9 ~# Z6 Y
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2)5 E  c* {" p5 e9 x4 _) A
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)* r0 z2 s0 `$ @% `3 K
    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)3 d7 G) x) X4 E& Y
    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)% U9 @" s6 Y) g" Y5 c) C0 ?; K3 r
    7 a; y  h$ M1 t
    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)
/ ?) g; @5 B9 |5 b    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
3 O1 |# H1 [6 C: R  n1 a+ v3 l6 u    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2), m& T( _/ s7 K
    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)
0 ~$ z! K. `$ O    ' a% z( ~7 w# N& b5 @' Q
    Dim pl0 As AcadLWPolyline. a  `& H0 t8 p3 c4 M( x; v+ Y& h
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)  a3 |0 u% {) o2 s
    Dim pl1 As AcadLWPolyline* N. u! X7 S. }& @
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)- q, r% Q% O( B- X* \

+ v: y* N4 D. p- x( G. K7 F+ |    pl0.Closed = True/ m1 o+ C" G0 P' M
    pl1.Closed = True& g  d, w( s- r
# n# I% q+ g$ `; e( P; k
End Sub

点评

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

本版积分规则

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

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

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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