明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 891|回复: 6

[提问] 怎样把创建的图形变成块定义?生产衣杆

[复制链接]
发表于 2023-10-30 01:30:32 | 显示全部楼层 |阅读模式
根据论坛内的代码,自己琢磨的,程序可以用,但是会提示未知命令!!而且生产的是三个矩形,没有成块?求大佬给优化一下
;-----------------衣杆生成------------------------------------
(defun c:yg(/  pt ent ent5 minpt maxpt  os p1 p2 p3  )  
  (setq os (getvar "OSMODE"))
  (setvar "cmdecho" 0)
(setq pt (getpoint "\n请选择矩形框内一点:"))
  (command "-boundary" "a" "i" "n" "" "o" "r" "" pt "")
  (setq ent (entlast))
  (vla-GetBoundingBox
    (vlax-ename->vla-object ent)
    'minpt
    'maxpt
   )
  (setq        minpt (vlax-safearray->list minpt)
               maxpt (vlax-safearray->list maxpt)
  )
  (entdel ent)
  (setq
         P1 (list (car minpt) (cadr minpt))
         P2 (list (car minpt) (cadr maxpt))
         P3 (list (car maxpt) (cadr maxpt))


         Y1 (list (car P2)        (-(cadr P2) 60 ))
         Y2 (list (+(car P2) 20)  (-(cadr P2) 120))
         Y3 (list (car P3)        (-(cadr P3) 60 ))
         Y4 (list (-(car P3) 20)  (-(cadr P3) 120))
         Y5 (list (+(car P2) 20)  (-(cadr P2) 75))
         Y6 (list (-(car P3) 20)  (-(cadr P3) 105))
)
  (setvar "OSMODE" 0)
       (command "_RECTANGLE" "NON" Y1 "NON" Y2  "")
      (command "_RECTANGLE" "NON" Y3 "NON" Y4  "")
       (command "_RECTANGLE" "NON" Y5 "NON" Y6  "")
     (setvar "OSMODE" os)
  (princ)
)


本帖子中包含更多资源

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

x
发表于 2023-10-31 09:43:46 | 显示全部楼层
(command "rectang" y1 y2)
(command "rectang" y3 y4)
(command "rectang" y5 y6)
回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-30 08:50:15 | 显示全部楼层
可以用动态块的吧
 楼主| 发表于 2023-10-30 20:40:02 | 显示全部楼层
davide888 发表于 2023-10-30 08:50
可以用动态块的吧

动态块还得调整位置吧
 楼主| 发表于 2023-10-31 12:14:09 | 显示全部楼层
xyp1964 发表于 2023-10-31 09:43
(command "rectang" y1 y2)
(command "rectang" y3 y4)
(command "rectang" y5 y6)

谢谢版主回复,未知命令的提示解决了,但是还是三个单独的矩形,想要把他们变成块怎么解决啊?成组的代码还不会使用
发表于 2023-11-1 20:53:39 | 显示全部楼层
hd654 发表于 2023-10-31 12:14
谢谢版主回复,未知命令的提示解决了,但是还是三个单独的矩形,想要把他们变成块怎么解决啊?成组的代码 ...

(setq ss(ssadd))
(command "rectang" y1 y2)
(ssadd(entlast) ss)
(command "rectang" y3 y4)
(ssadd(entlast) ss)
(command "rectang" y5 y6)
(ssadd(entlast) ss)
(setq bk (rtos (getvar 'cdate)2 8))
(command"-block" bk p1 ss "")
(command"-insert" bk p1 1 1 0)
 楼主| 发表于 2023-11-1 23:32:02 | 显示全部楼层
xyp1964 发表于 2023-11-1 20:53
(setq ss(ssadd))
(command "rectang" y1 y2)
(ssadd(entlast) ss)

学习了,谢谢版主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 08:26 , Processed in 0.255806 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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