明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: caocaosasd

[提问] 新手诚心求教,关于command的使用问题,有别的办法替代command操作实体吗?

[复制链接]
 楼主| 发表于 2021-6-16 19:57:53 | 显示全部楼层
本帖最后由 caocaosasd 于 2021-6-16 20:56 编辑
start4444 发表于 2021-6-16 18:04
截个图说明比较好,估计是没关捕捉

原来如此!关了捕捉果然可以了!


。。。。无语了,我刚回来关了捕捉运行了一下,居然可以运行了。但是实验了一下回复里那个ssadd的程序,发现运行无效。然后我改回来,发现原版能运行的程序也还是无效。。。太奇怪了。而且同样的程序,楼上的发动图的哥们也说可以运行,但是我这运行不出来

 楼主| 发表于 2021-6-16 20:58:04 | 显示全部楼层

请问一下是用的我发的代码取消注释的运行吗?为何我这还是不行……
 楼主| 发表于 2021-6-16 20:58:29 | 显示全部楼层
lijiao 发表于 2021-6-16 15:47
不用command,用纯lisp实现:

还没学习到entmake的知识,感谢感谢!
 楼主| 发表于 2021-6-16 21:35:57 | 显示全部楼层
aihuyujian 发表于 2021-6-16 15:33
(setq ss nil ss (ssadd))
(ssadd ZX ss)
(ssadd ENT13 ss)

无奈了呀……为啥不行呀……


本帖子中包含更多资源

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

x
 楼主| 发表于 2021-6-16 21:37:53 | 显示全部楼层
lijiao 发表于 2021-6-16 15:47
不用command,用纯lisp实现:

太牛了!果然成了!太感谢了!
 楼主| 发表于 2021-6-18 01:44:27 来自手机 | 显示全部楼层
lijiao 发表于 2021-6-16 15:47
不用command,用纯lisp实现:

大佬,您的演示让我一连学习了好几个语句的用法,用替换实体端点坐标的方法来模拟实体的移动,涨见识了!也解决了问题,再次向您表示感谢!
顺便我想请教一下,如果我想在此基础上,按e键表示删除/恢复   中线,又应该怎么做呢?
就是第一次按e,删掉zx那条线,再按一次,又恢复zx那条线,再按又删,这样的效果。
发表于 2021-6-18 09:24:54 | 显示全部楼层
本帖最后由 yshf 于 2021-6-18 09:38 编辑

;ActiveX方式
(defun C:cxz2 (/ OLD_CMDECHO CL L1 L2 doc layers layer modelSpace KU PT1 PT2 PT3 PT4 objlist loop zp1 zp2)
  (setq OLD_CMDECHO (getvar "CMDECHO"))
  (setq CL (getvar "clayer"))
  (setvar "CMDECHO" 0)
  (setvar "EDGEMODE" 1)

  (if (setq L1 (getpoint "\起点:"))
      (If (setq L2 (getpoint L1 " 止点:"))
          (progn
              (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
              (setq layers (vlax-get-property doc "layers"))
              (setq modelSpace (vla-get-ModelSpace doc))
              ;新建图层
              (If (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list layers "fjgj")))
                  (progn
                      (setq layer (vla-Add layers "fjgj"))
                      (vlax-put-property layer "color" 6)
                  )
             )
             (setvar "clayer" "fjgj")

             ;计算出第2、3条直线的端点
             (setq KU (angle L1 L2))
             (setq PT1 (polar L1 (+ KU (* 0.5 pi)) 75))
             (setq PT2 (polar L1 (+ KU (* 1.5 pi)) 75))
             (setq PT3 (polar L2 (+ KU (* 0.5 pi)) 75))
             (setq PT4 (polar L2 (+ KU (* 1.5 pi)) 75))
             ;绘三段直线
             (setq objlist (mapcar '(lambda(p1 p2)
                                        (vla-AddLine modelSpace (vlax-3d-point p1) (vlax-3d-point p2))
                                    )
                                    (list L1 pt1 pt2)
                                    (list L2 pt3 pt4)
                            )
             )
             (setq pts (list (vlax-get-property (car  objlist) "StartPoint")
                             (vlax-get-property (car  objlist) "EndPoint")
                       )
             )
             ;偏移直线
             (setq loop T)
             (prompt "\n 往左偏移(A)/往右偏移(B)/删除或恢复中线(E)/<退出>:")
             (while (not (member (setq code (grread T 8)) '((2 32) (2 13))))
                 (cond ((equal code '(2 97) 0.1)
                           ;A键向左偏移
                           (setq zp1 (vlax-get-property (car  objlist) "StartPoint"))
                           (setq zp2 (vlax-get-property (cadr objlist) "StartPoint"))
                           (mapcar '(lambda(obj) (vla-Move Obj zp1 zp2)) objlist )
                           (setq pts (list (vlax-get-property (car objlist) "StartPoint")
                                           (vlax-get-property (car objlist) "EndPoint")
                                     )
                           )
                       )
                       ((equal code '(2 98) 0.1)
                           ;B键向右偏移
                           (setq zp1 (vlax-get-property (car  objlist) "StartPoint"))
                           (setq zp2 (vlax-get-property (last objlist) "StartPoint"))
                           (mapcar '(lambda(obj) (vla-Move Obj zp1 zp2)) objlist )
                           (setq pts (list (vlax-get-property (car objlist) "StartPoint")
                                           (vlax-get-property (car objlist) "EndPoint")
                                     )
                           )                          
                       )
                       ((equal code '(2 101) 0.1)
                           ;E键删除或恢复中线
                           (cond ((= (length objlist) 3)
                                     (vla-delete (car objlist))
                                     (setq objlist (vl-remove (car objlist) objlist))
                                 )
                                 ((= (length objlist) 2)
                                     (setq objlist (cons (vla-AddLine modelSpace (car pts) (cadr pts))
                                                         objlist
                                                   )
                                     )
                                 )
                           )
                       )
                  )
             )
             ;释放对象
             (mapcar '(lambda(obj)
                           (If (/= obj nil)
                               (progn (vlax-release-object obj)(setq obj nil))
                           )
                      )
                      (list layer layers modelSpace doc)
             )
          )
      )
  )

  (setvar "clayer" CL)
  (setvar "CMDECHO" OLD_CMDECHO)
  (princ)
)
 楼主| 发表于 2021-6-27 00:03:54 | 显示全部楼层
lijiao 发表于 2021-6-16 15:47
不用command,用纯lisp实现:

大佬可否再帮个忙~如果说我想entmake的是两顶点的多段线,而非直线,就是说它会有两个(cons 10 xxx),后面的subst应该怎么写呢?


2、两顶点多段线(多顶点类似)
(entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2) (cons 10 pt1) (cons 10 pt2)))
 楼主| 发表于 2021-6-27 00:04:26 | 显示全部楼层
yshf 发表于 2021-6-18 09:24
;ActiveX方式
(defun C:cxz2 (/ OLD_CMDECHO CL L1 L2 doc layers layer modelSpace KU PT1 PT2 PT3 PT4 o ...

先收藏一下~现在还没学到vlax,还需要后面再消化……
发表于 2021-11-1 00:56:58 来自手机 | 显示全部楼层
好像 (command “move" zx ""……)少了个确定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 10:42 , Processed in 0.163504 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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