本帖最后由 guosheyang 于 2025-9-1 21:22 编辑

        想将经过布尔运算后的三维实体 转为网格,并建立块儿,再插入块儿,但是以下代码不能实现, 但是如果将(GRAPHSCR)以后的代码注释掉 似乎又可以转为网格,为何两部分放在一个函数中不能顺利执行下去?请朋友们帮修改下,谢谢!


;(tt (SETQ ST(car(entsel))))
(defun tt(st / DD ENT_DATA LINE NAME S SCWG SSWG )
(setvar 'SMOOTHMESHCONVERT 3)
(setq zx(vlax-get (vlax-ename->vla-object st) 'Centroid))
(setq s(ssadd))
(sssetfirst nil (ssadd st s))
(vla-sendcommand (vla-get-activedocument (setq dd(vlax-get-acad-object))) (strcat "MESHSMOOTH" " " ))
(vlax-release-object dd)
(GRAPHSCR)
(vl-cmdf "REGEN" "")
(progn
  (setq name "1")  ;(entget(car(entsel)))
  (if (tblsearch "block" name) (setq name(strcat name "1")))
  (entmake (list '(0 . "BLOCK") (cons 2 name) (CONS 10 zx) '(70 . 0)))
  (setq sswg(ssget "x" '((0 . "MESH"))))
  (if sswg
   (progn
    (setq scwg(SSNAME sswg 0));(entlast)
    (setq ent_data (entget (SSNAME (ssget "x" '((0 . "MESH"))) 0) ))
    (entmake (vl-remove-if '(lambda (x) (= (car x) -1)) ent_data))
    (entmake '((0 . "ENDBLK")))
    (entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 (getpoint "\n 指定插入点")))) ;;插入块儿
    )
    (princ "找不到网格图元 建块儿失败")
  )
)
  (princ)
)




网友答: 前排打卡 蹲方案

网友答: 本帖最后由 guosheyang 于 2025-9-1 21:17 编辑

再次测试了下   以下代码对于标准的box命令生成的实体可以, 但是对于用extrude命令拉伸矩形生成的三维实体,或者经过布尔运算后的实体不起作用,
;(tt (SETQ ST(car(entsel))))
(defun tt(st / ENT_DATA F NAME SCWG SSWG ZX)
(if st
  (progn
   (setvar 'SMOOTHMESHCONVERT 3)
   (setq thisdrawing (vla-get-activedocument(vlax-get-acad-object)))
   (vla-PurgeAll thisdrawing)
   (setq zx(vlax-get (vlax-ename->vla-object st) 'Centroid))
   (if command-s (setq f command-s)(setq f vl-cmdf))
   (f "MESHSMOOTH" st "" "") ;这句最后加上一个或者两个""均可 引号中间不能有空格
   (setq scwg(entlast))
  (if(and scwg (= "MESH" (cdr(assoc 0(entget scwg)))))
    (progn
     (setq name "1")
     (if (tblsearch "block" name) (setq name(strcat name "1")))
     (entmake (list '(0 . "BLOCK") (cons 2 name) (CONS 10 zx) '(70 . 0)))
     (setq ent_data (entget scwg))
     (entmake (vl-remove-if '(lambda (x) (= (car x) -1)) ent_data))
     (entmake '((0 . "ENDBLK")))
     (entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 (getpoint "\n 指定插入点")))) ;;插入块儿
    )
     (princ "未生成网格图元 建块儿失败")
   )
   )
    (princ "\n 未选择三维实体")
  )
  (princ)
)
  • 上一篇:定制图纸中偏移18MM画个9毫米宽度背板矩形怎么实
  • 下一篇:没有了