明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

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

求一个标注能断开的代码

[复制链接]
 楼主| 发表于 2020-10-31 18:11 | 显示全部楼层
start4444 发表于 2020-10-30 23:14
其实很简单,一般选对象都是想提取对象图元名,entsel是单选个体,ssget是选集,选集的话要多一步提取个 ...

再请教一下centsel这个函数是不是不能按照你这个法改呀
我直接用你的那个套上
(setq ent(ssname (ssget ":S" '((0 . "DIMENSION"))) 0))
和套到我手里的那个代码上
(or(setq ent(ssname(ssget "i"'((0 . "DIMENSION")))0)) (and(princ "\n選擇要拆分的尺寸")(setq ent(ssname(ssget ":S" '((0 . "DIMENSION")))0))))

这两种方式都不行呢,你再帮我看一下行吗,看看应该怎么改呀。
我把那个DDR等分代码,贴到下面,见下一楼,你整体看一下,那个代码也是你以前帮我改的。
看看怎么也改成可以先选择,再执行,这样我把几个代码再组合起来就完美了,
回复

使用道具 举报

 楼主| 发表于 2020-10-31 18:12 | 显示全部楼层
本帖最后由 xj6019 于 2020-10-31 18:13 编辑
start4444 发表于 2020-10-30 23:14
其实很简单,一般选对象都是想提取对象图元名,entsel是单选个体,ssget是选集,选集的话要多一步提取个 ...

这个是整体的代码,麻烦你再帮我看看,谢谢了。
(vl-load-com)
(defun c:ddr (/ n x ent entL p2 p3 px1 px2 py1 py2 ptdd xl sa pt0 ppt ptdd)
(command "Selectioncycling" "0");ctrl/w關閉
        (setvar "cmdecho" 0)
        (command "undo" "be")
        (setq entL '())
        (while
                (if
                ;(setq ent (centsel "\n>>>選擇要拆分的尺寸 或 <按 ESC 退出>:" "DIMENSION")) 这个是原始可用的
        (setq ent(ssname (ssget ":S" '((0 . "DIMENSION"))) 0))   这样改了不行       
        (or(setq ent(ssname(ssget "i"'((0 . "DIMENSION")))0)) (and(princ "\n選擇要拆分的尺寸")(setq ent(ssname(ssget ":S" '((0 . "DIMENSION")))0))))        这样改了也不行
                        (progn
                                (setq x (entget ent)
                                        entL (cons ent entL)
          p2 (dxfxj 13 x)
          p3 (dxfxj 14 x)
          px1 (list (car p2) (/ (+ (cadr p2)(cadr p3)) 2.0))
          px2 (list (car p3) (/ (+ (cadr p2)(cadr p3)) 2.0))
          py1 (list (/ (+ (car p2)(car p3)) 2.0) (cadr p2))
          py2 (list (/ (+ (car p2)(car p3)) 2.0) (cadr p3))
          ptdd (list p2 p3)
          XL (entget (dxfxj -2 (tblsearch "block" (dxfxj 2 x))))
          SA (abs (sin (angle (dxfxj 10 xl) (dxfxj 11 xl)))))
                                (while (setq pt0 (getpoint "\n>>>左鍵点取拆分点 或 <右鍵選擇其他尺寸>:"))
                                        (command ".copy" ent "" "0,0" "@")
                                        (setq entL (cons (entlast) entL))
                                        (cond
                                                ((equal SA 1 1e-6) ;;水平
                                                        (setq ptdd (cons pt0 ptdd)
                                                                ppt (Lsort ptdd 0))
                                                )
                                                ((equal SA 0 1e-6) ;;垂直
                                                        (setq ptdd (cons pt0 ptdd)
                ppt (Lsort ptdd 1))
                                                )
                                                (t (setq ptdd (cons (ptper pt0 p2 p3) ptdd)
                                                                 ppt (Lsort ptdd 2)))
                                        )
                                        (setq ppL (mapcar 'list ppt (cdr ppt))
                                                n 0)
                                        (repeat (length ppL)
                                                (setq xf (entget (nth n entL))
                                                        nxf (subst (cons 13 (car  (nth n ppL)))(assoc 13 xf) xf)
                                                        wxf (subst (cons 14 (cadr (nth n ppL)))(assoc 14 nxf) nxf)
                                                        n (1+ n))
                                                (entmod wxf)                                                                                       
                                        )
                                ))
                        (princ "\n退出")
                ))
  (command "undo" "e" ) (setvar "cmdecho" 1 )
  (princ)
)

回复

使用道具 举报

发表于 2020-10-31 18:57 来自手机 | 显示全部楼层
ssget要放最前面才能先选对象

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-10-31 21:53 | 显示全部楼层
start4444 发表于 2020-10-31 18:57
ssget要放最前面才能先选对象

完美,漂亮,又完美解决了一个愿望,非常感谢!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 12:54 , Processed in 0.139618 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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