乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 148|回复: 9

[求助] 如何将ARC替换成CIRCLE?

[复制链接]

31

主题

78

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
202
发表于 2003-12-4 11:09:00 | 显示全部楼层 |阅读模式
((-1 . ) (0 . ARC) (330 . ) (5 . 2C) (100 .
AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbCircle) (10 222.933
134.887 0.0) (40 . 96.451) (210 0.0 0.0 1.0) (100 . AcDbArc) (50 . 0.221533)
(51 . 2.61162))
用 subst 替换成:
((-1 . ) (0 . CIRCLE) (330 . ) (5 . 2C) (100 .
AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbCircle) (10 222.933
134.887 0.0) (40 . 96.451) (210 0.0 0.0 1.0) )
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-4 11:14:00 | 显示全部楼层
取出圆心,半径及其他你需要的信息(如:层,颜色,线型等等),重新做一个圆就可以了
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-4 11:50:00 | 显示全部楼层
是這樣做的.
(DEFUN c:test(/ a)
  (setq a (car (entsel"\nSelect object arc:")))
  (setq radius (assoc 40 (entget a)))
  (setq center (assoc 10 (entget a)))
  (entdel a)
  (entmake (append
            '((0 . "CIRCLE"))
            '((100 . "AcDbEntity"))
            '((100 . "AcDbCircle"))
             (list radius)
             (list center)))
  (princ))
回复

使用道具 举报

31

主题

78

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
202
发表于 2003-12-4 14:22:00 | 显示全部楼层
能不能替换方法,因为我想保留原来的绘图顺序。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-4 14:31:00 | 显示全部楼层
应该不行,看看帮助文件中说的,
关于 entmod 函数所作的修改有一些限制:
不能改变一个图元的类型和句柄。如果一定要这样做,只能先调用 entdel 函数删除它,然后调用 command 或 entmake 函数创建新图元。
        entmod 函数不能修改内部域,如 SEQEND 图元的 -2 组中的图元名,如果试图作这样的修改,将会被系统忽略。
        不能使用 entmod 函数修改视口图元。
---------------------------------------------------------------------------
第一个就是不能修改类型,所以无法将此图元的类型从ARC修改为CIRCLE
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-12-4 17:08:00 | 显示全部楼层
BDYCAD你這個程序並不能保有原來ARC的其他性質(如圖層 顏色  所在UCS…….)
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-4 17:28:00 | 显示全部楼层
是呀. 刚注意到. 所以改了改. 现在可以了, 多谢龙龙指点..
(DEFUN c:test(/ a radius center endc)
  (setvar "cmdecho" 0)
  (setq a (car (entsel"\nSelect object arc:")))
  (setq radius (assoc 40 (entget a)))
  (setq center (assoc 10 (entget a)))
  (entmake (append
     '((0 . "CIRCLE"))
            '((100 . "AcDbEntity"))
     '((100 . "AcDbCircle"))
      (list radius)
      (list center)))
  (setq endc (entlast))
  (command "_.matchprop" a endc "")
  (entdel a)(setvar "cmdecho" 1)
  (princ))
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-12-8 08:12:00 | 显示全部楼层

程序對於不平行於wcs的arc還是不行呀!再想想好嗎?
;;CIRCLE
((-1 . ) (0 . "CIRCLE") (330 . ) (5 .
"471B") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbCircle") (10 171.147 14.6886 -131.974) (40 . 43.6533) (210 0.0 0.0 1.0))
;;ARC
((-1 . ) (0 . "ARC") (330 . ) (5 .
"471B") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbCircle") (10 171.147 14.6886 -131.974) (40 . 43.6533) (210 0.0 0.0 1.0)
(100 . "AcDbArc") (50 . 0.619495) (51 . 3.20636))
比較兩種DXF碼的差別,
1. (0 . "CIRCLE")  (0 . "ARC")
2. ARC多了
  (100 . "AcDbArc") (50 . 0.619495) (51 . 3.20636))
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-9 16:23:00 | 显示全部楼层
樓上我想不出了哦. 是不是更改你提到的那兩項, 再重生成過就好了嗎?
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-12-9 17:08:00 | 显示全部楼层
;;yes
(defun C:ARCTOCIR (/ QQ QQQ)
  (setq QQ (entget (setq QQQ (car (entsel)))))
  (setq QQ (member (assoc 210 QQ) (reverse QQ)))
  (setq QQ (reverse (subst '(0 . "CIRCLE") (assoc 0 QQ) QQ)))
  (entmake QQ)
  (entdel QQQ)
  (princ)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 14:26 , Processed in 1.507738 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表