找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3305|回复: 7

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

[复制链接]
发表于 2024-2-7 18:01:20 | 显示全部楼层 |阅读模式
本人不会autolisp。请教,怎样才能用autolisp在直线两端各加一个矩形?比如在白色直线的两端各加一个1*5的矩形?8 O& U/ H  {) y  y8 q+ q

- ?  a2 T5 E" ?; k. V; v: y6 z
1 h: |% Y: ?% o7 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()' o% I4 ?4 B8 x" M. P4 e( b
    8 f( p" `. C. w8 _$ B
    Dim line2 As AcadLine
. }, u( f2 e$ y6 F2 h& Q! n    ThisDrawing.Utility.GetEntity line2, basePnt, "Select an line:"
; @' g& l1 n; N4 M/ i. A8 b    . q7 U+ v4 W4 {* X0 E% l, n
    Dim p1
  A5 j) O$ G* @. S: E1 C    p1 = line2.startPoint  S' L0 ^& h+ J' A) |! j+ ]
    Dim p2  R) n* H- e$ G5 ?
    p2 = line2.endPoint+ B& ^. y$ M' M+ t5 U5 T2 y
   
% A1 W7 n& D. U0 r4 l! J    Dim angle2 As Double8 P3 l5 D9 Q: ~! h) j$ s
    angle2 = line2.angle' Q3 c' ?/ C/ U8 C% U

( N/ [  [, G- k/ X( N) N1 s    Dim pts1(0 To 7) As Double
& p0 w3 j3 I8 D* J! E7 _% m# {    Dim pts2(0 To 7) As Double9 [* m% b( p& n0 x; Y+ m
      $ y4 c# |2 {! l
    pts1(0) = CDbl(p1(0)) + 0.5 * Sin(angle2): pts1(1) = CDbl(p1(1)) - 0.5 * Cos(angle2): L+ n  v: m# s1 |
    pts1(2) = pts1(0) + 5 * Cos(angle2): pts1(3) = pts1(1) + 5 * Sin(angle2)
" W8 ]* E! ]& N" C    pts1(4) = pts1(2) - 1 * Sin(angle2): pts1(5) = pts1(3) + 1 * Cos(angle2)0 T. e  }( m3 n4 C6 V
    pts1(6) = pts1(4) - 5 * Cos(angle2): pts1(7) = pts1(5) - 5 * Sin(angle2)
. X, y) ^/ h! j+ r* _    8 o$ h. Y  z6 J! b3 R) p/ c
    pts2(0) = CDbl(p2(0)) + 0.5 * Sin(angle2): pts2(1) = CDbl(p2(1)) - 0.5 * Cos(angle2)
" H) [  W! Y( @    pts2(2) = pts2(0) - 5 * Cos(angle2): pts2(3) = pts2(1) - 5 * Sin(angle2)
3 ?) {: B6 J+ i$ e+ M    pts2(4) = pts2(2) - 1 * Sin(angle2): pts2(5) = pts2(3) + 1 * Cos(angle2)
6 U( A. j- P( L! m/ s( ?, ]    pts2(6) = pts2(4) + 5 * Cos(angle2): pts2(7) = pts2(5) + 5 * Sin(angle2)+ c+ @! m- G( ~, `1 E" T8 F
   
, b" t( K" [( A) `6 T, }    Dim pl0 As AcadLWPolyline& E3 O' A( F  T& B; U" e" I
    Set pl0 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts1)! h6 @: P8 U% k5 ~
    Dim pl1 As AcadLWPolyline* C6 ?/ s: D; z  Y) H
    Set pl1 = ThisDrawing.ModelSpace.AddLightWeightPolyline(pts2)
# Z: z5 ?! `& u  |
; C+ J& [( q2 @& R' o( ~0 H+ X    pl0.Closed = True) _  j9 S2 ^( }/ ^8 n
    pl1.Closed = True
" s( }/ I! i( i/ |5 c$ E& k& L$ F& D' X+ g
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 05:06 , Processed in 0.068453 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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