明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1186|回复: 9

[提问] 求个根据圆不同的直径 插入不同的块的代码

[复制链接]
发表于 2017-11-3 14:49 | 显示全部楼层 |阅读模式
想根据圆不同的大小 在圆心位置 插入不同的块,有谁有这样的源码么
发表于 2017-11-3 15:03 | 显示全部楼层
路过,顶起来,可以一起来学习一下
 楼主| 发表于 2017-11-3 21:21 | 显示全部楼层
有没有哪位大神有呀 用币买也可以的
发表于 2017-11-3 21:54 | 显示全部楼层
...不同的块...
所以会有名称对映的问题对不?

人机如何互动?要那些提示?
这些攸关程序架构!
...

用币买也买不来呀!
 楼主| 发表于 2017-11-4 22:34 | 显示全部楼层
Andyhon 发表于 2017-11-3 21:54
...不同的块...
所以会有名称对映的问题对不?

块都是已经做好了的
我自己(defun C:k3 (/ BLOCK E ELIST N PT SS)
  (princ "\n根据圆直径替换成块)
  (if (setq SS (ssget '((0 . "CIRCLE")(-4 . "=")(40 . 5.15))))
      (repeat (setq N (sslength SS))
      (setq E (ssname SS (setq N (1- N))))
      (setq ELIST (entget E))
      (setq PT (cdr (assoc 10 ELIST)))
      (command "INSERT" "xm12"(trans pt 0 1) 1 1 0)
      (entdel E) ;_删除原有的圆
    )
  )
  (if (setq SS (ssget '((0 . "CIRCLE")(-4 . "=")(40 . 4.15))))
      (repeat (setq N (sslength SS))
      (setq E (ssname SS (setq N (1- N))))
      (setq ELIST (entget E))
      (setq PT (cdr (assoc 10 ELIST)))
      (command "INSERT" "xm10"(trans pt 0 1) 1 1 0)
      (entdel E) ;_删除原有的圆
    )
  )
  (princ)
)

需要选择两次才能够完成替换两种圆  我是想只用款选一次就能够把不同大小的圆都能够替换出来
发表于 2017-11-4 22:51 | 显示全部楼层
试试这个(defun C:k3 (/ BLOCK E ELIST N PT SS);;;  (princ "\n根据圆直径替换成块)
  (if (setq SS (ssget '((0 . "CIRCLE")
                        (-4 . "<or")
                        (40 . 5.15)
                        (40 . 4.15)
                        (-4 . "or>")
                       )
               )
      )
      (repeat (setq N (sslength SS))
      (setq E (ssname SS (setq N (1- N))))
      (setq ELIST (entget E))
      (setq PT (cdr (assoc 10 ELIST)))
      (command "INSERT" "xm12"(trans pt 0 1) 1 1 0)
      (entdel E) ;_删除原有的圆
    )
  )
  (princ)
)

发表于 2017-11-4 22:51 | 显示全部楼层
  1. ;; tt(圆替换成块)
  2. (defun c:tt ()
  3.   (princ "\n根据圆直径替换成块: ")
  4.   (if (setq ss (ssget '((0 . "circle"))))
  5.     (progn
  6.       (setq i        -1
  7.             ss1        (ssadd)
  8.       )
  9.       (while (setq s1 (ssname ss (setq i (1+ i))))
  10.         (setq ent (entget s1)
  11.               pt  (cdr (assoc 10 ent))
  12.               rr  (cdr (assoc 40 ent))
  13.         )
  14.         (cond ((= rr 5.15)
  15.                (command "insert" "xm12" pt 1 1 0)
  16.                (ssadd s1 ss1)
  17.               )
  18.               ((= rr 4.15)
  19.                (command "insert" "xm10" pt 1 1 0)
  20.                (ssadd s1 ss1)
  21.               )
  22.         )
  23.       )
  24.       (command "erase" ss1 "")
  25.     )
  26.   )
  27.   (princ)
  28. )
 楼主| 发表于 2017-11-5 10:18 | 显示全部楼层
发表于 2017-11-11 21:16 | 显示全部楼层

版主 你这个代码除了圆直径这一个条件 还能再增加一个线型的条件么
发表于 2018-1-18 15:52 | 显示全部楼层

院长无所不能 太牛!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 20:49 , Processed in 0.206404 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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