乐筑天下

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

[编程交流] 为什么只能选择圆直径

[复制链接]

5

主题

31

帖子

26

银币

初来乍到

Rank: 1

铜币
26
发表于 2022-7-5 20:20:30 | 显示全部楼层 |阅读模式
我想选择圆直径(2.5、3.3、4.2、5.0、6.8、8.5、10.5、12.0、14.0、15.5、17.5),但只选择圆直径5
 
为什么?
 
 
  1. (defun c:tt (/ ss dcl fn id klst)
  2. (defun _make (e / r pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1 ln2)
  3.    (setq lst '((2.5 "M3" 0.06 1.5)
  4.                (3.3 "M4" 0.08 1.5)
  5.                (4.2 "M5" 0.1 2.5)
  6.                (5.0 "M6" 0.12 3.0)
  7.                (6.8 "M8" 0.16 4.0)
  8.                (8.5 "M10" 0.2 5.0)
  9.                (10.5 "M12" 0.24 6.0)
  10.                (12.0 "M14" 0.28 7.0)
  11.                (14.0 "M16" 0.32 8.0)
  12.                (15.5 "M18" 0.36 9.0)
  13.                (17.5 "M20" 0.4 10.0)
  14.               )
  15.    )
  16.    (setq r    (vlax-get e 'radius)
  17.          pcen (vlax-get e 'center)
  18.    )
  19.    (mapcar 'set '(str xk mr) (cdr (assoc r lst)))
  20.    (setq cel (if (eq (setq lt (vlax-get e "linetype"))
  21.                      "ByLayer"
  22.                  )
  23.                (vlax-get
  24.                  (vla-item (fy:aclayers) (vlax-get e "layer"))
  25.                  "linetype"
  26.                )
  27.                lt
  28.              )
  29.    )
  30.    (setq dis (* r 1.1)
  31.          p1  (polar pcen 0. dis)
  32.          p2  (polar pcen _pi2 dis)
  33.          p3  (polar pcen pi dis)
  34.          p4  (polar pcen (- _pi2) dis)
  35.    )
  36.    (if        (member "isBlock" slst)
  37.      (setq space (vla-add (fy:acblocks) (vlax-3d-point pcen) "*U"))
  38.      (setq space (fy:acms))
  39.    )
  40.    (setq cir (vlax-invoke space 'addcircle pcen r)
  41.          arc (vlax-invoke space 'addarc pcen mr 4.71239 3.14159)
  42.          ln1 (vlax-invoke space 'addline p1 p3)
  43.          ln2 (vlax-invoke space 'addline p2 p4)
  44.    )
  45.    (mapcar '(lambda (x)
  46.               (vlax-put (car x) 'layer "screw")
  47.               (vlax-put (car x) 'color (cadr x))
  48.               (vlax-put (car x) "linetype" (caddr x))
  49.               (vlax-put (car x) "linetypescale" xk)
  50.             )
  51.            (list (list cir 33 cel)
  52.                  (list arc 3 cel)
  53.                  (list ln1 1 "center")
  54.                  (list ln2 1 "center")
  55.            )
  56.    )
  57.    (if        (member "isText" slst)
  58.      (progn
  59.        (setq txt (vlax-invoke space 'AddText str pcen (* mr 0.4)))
  60.        (vla-put-alignment txt acAlignmentTopCenter)
  61.        (vla-put-textalignmentpoint
  62.          txt
  63.          (vlax-3d-point (polar pcen (- _pi2) (* mr 0.17)))
  64.        )
  65.      )
  66.    )
  67.    (if        (member "isBlock" slst)
  68.      (vlax-invoke
  69.        (fy:acspace)
  70.        'insertblock
  71.        pcen
  72.        (vla-get-name space)
  73.        1.
  74.        1.
  75.        1.
  76.        0.
  77.      )
  78.    )
  79. )
  80. (if (not slst)
  81.    (setq slst '("isErased" "isText" "isBlock"))
  82. )
  83. (setq        dcl  '("screw:dialog{"
  84.               "label = "Parameter settings";"
  85.               " :toggle{ key = "isErased"; label = "Delete original circle";}"
  86.               " :toggle { key = "isText"; label = "Generate text";}"
  87.               " :toggle { key = "isBlock"; label = "Generate block";}"
  88.               " ok_cancel;"
  89.               "}"
  90.              )
  91.        klst '("isErased" "isText" "isBlock")
  92.        fn   (xd::dcl:make dcl)
  93.        id   (xd::dcl:load fn "screw")
  94. )
  95. (xd::Dcl:toggleaction
  96.    klst
  97.    'slst
  98.    nil
  99. )
  100. (fy:begin)
  101. (if (and (= (xd::dcl:start id fn)
  102.              1
  103.           )
  104.           (setq ss (ssget '((0 . "circle")
  105.                             (-4 . "<or")
  106.                             (40 . 2.5)
  107.                             (40 . 3.3)
  108.                             (40 . 4.2)
  109.                             (40 . 5.0)
  110.                             (40 . 6.
  111.                             (40 . 8.5)
  112.                             (40 . 10.5)
  113.                             (40 . 12.0)
  114.                             (40 . 14.0)
  115.                             (40 . 15.5)
  116.                             (40 . 17.5)
  117.                             (-4 . "or>")
  118.                            )
  119.                    )
  120.           )
  121.      )
  122.    (progn
  123.      (if (not (tblsearch "style" "txt"))
  124.        (command ".style"    "txt"         "txt.shx,gbcbig.shx"
  125.                 0.0             1.0         0.0             "n"
  126.                 "n"             "n"
  127.                )
  128.      )
  129.      (if (not (tblsearch "ltype" "hidden"))
  130.        (vla-load (fy:acltypes) "hidden" "acadiso.lin")
  131.      )
  132.      (if (not (tblsearch "ltype" "center"))
  133.        (vla-load (fy:acltypes) "center" "acadiso.lin")
  134.      )
  135.      (if (not (tblsearch "layer" "screw"))
  136.        (vla-add (fy:aclayers) "screw")
  137.      )
  138.      (mapcar '(lambda (x) (_make x)) (fy:cset->objs))
  139.      (if (member "isErased" slst)
  140.        (command ".erase" ss "")
  141.      )
  142.    )
  143. )
  144. (princ)
  145. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:23:48 | 显示全部楼层
 
因为DXF 40代表的是半径值而不是直径,代码实际上选择的是半径为2.5的圆,而不是直径为5.0的圆
 
看看这里
回复

使用道具 举报

5

主题

31

帖子

26

银币

初来乍到

Rank: 1

铜币
26
发表于 2022-7-5 20:29:50 | 显示全部楼层
 
非常感谢。塔尔瓦特。你是正确的!但是直径没有DXF,我怎么改变?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:32:08 | 显示全部楼层
 
不客气。将值除以2.0
回复

使用道具 举报

5

主题

31

帖子

26

银币

初来乍到

Rank: 1

铜币
26
发表于 2022-7-5 20:34:01 | 显示全部楼层
(setq R(dxf 40 dat)
D(*R 2)
)
 
(setq ss(ssget’((0。“圆”)
(-4。”(D.2.5)
(D.3.3)
(D.4.2)
..............
..............
 
(defun dxf(m dat)(cdr(assoc m dat)))
 
但是,这是错误的。塔瓦先生,你能给我一个样品吗?谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:37:57 | 显示全部楼层
很抱歉我上次的回复,我应该说除法而不是乘法。
 
试试这个。
 
  1. (ssget
  2. (append '((0 . "circle") (-4 . "<or"))
  3.          (mapcar '(lambda (v) (cons 40 (/ v 2.)))
  4.                  '(2.5 3.3 4.2 5.0 6.8 8.5 10.5 12.0 14.0 15.5 17.5)
  5.          )
  6.          '((-4 . "or>"))
  7. )
  8. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 20:42:15 | 显示全部楼层
  1. [b][color=BLACK]([/color][/b]setq ss [b][color=FUCHSIA]([/color][/b]ssget [b][color=NAVY]([/color][/b]list [b][color=MAROON]([/color][/b]cons 0 [color=#2f4f4f]"CIRCLE"[/color][b][color=MAROON])[/color][/b]
  2.                      [b][color=MAROON]([/color][/b]cons -4 [color=#2f4f4f]"<OR"[/color][b][color=MAROON])[/color][/b]
  3.                         [b][color=MAROON]([/color][/b]cons 40 1.25[b][color=MAROON])[/color][/b]
  4.                         [b][color=MAROON]([/color][/b]cons 40 1.65[b][color=MAROON])[/color][/b]
  5.                         [b][color=MAROON]([/color][/b]cons 40 2.10[b][color=MAROON])[/color][/b]
  6.                      [b][color=MAROON]([/color][/b]cons -4 [color=#2f4f4f]"OR>"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
第40组是半径,而不是直径
 
此外,当使用引号符号时,它禁止对代码进行所有评估。
 
-大卫
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:44:39 | 显示全部楼层
轻微的变化
  1. (setq rad (vla-get-radius (vlax-ename->vla-object (car (entsel)))))

然后查找匹配的Rad
回复

使用道具 举报

5

主题

31

帖子

26

银币

初来乍到

Rank: 1

铜币
26
发表于 2022-7-5 20:47:38 | 显示全部楼层
 
是的,使用半径是简单的更改。但是为什么要使用“(列表(缺点)?
 
无法与此代码对应。
  1. (defun _make (e / r pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1 ln2)
  2.    (setq lst '((1.25 "M3" 0.06 1.5)
  3.                (1.65 "M4" 0.08 1.5)
  4.                (2.10 "M5" 0.1 2.5)
  5.                (2.50 "M6" 0.12 3.0)
  6.                (3.40 "M8" 0.16 4.0)
  7.                (4.25 "M10" 0.2 5.0)
  8.                (5.25 "M12" 0.24 6.0)
  9.                (6.00 "M14" 0.28 7.0)
  10.                (7.00 "M16" 0.32 8.0)
  11.                (7.75 "M18" 0.36 9.0)
  12.                (8.75 "M20" 0.4 10.0)
  13.               )
  14.    )
回复

使用道具 举报

5

主题

31

帖子

26

银币

初来乍到

Rank: 1

铜币
26
发表于 2022-7-5 20:51:55 | 显示全部楼层
 
太棒了塔尔瓦特。这很好。
还有一个地方必须修改
 

  1. (defun _make (e / r pcen dis lst str xk mr cel p1 p2 p3 p4 cir ln1 ln2)
  2.    (setq lst '((2.5 "M3" 0.06 1.5)
  3.                (3.3 "M4" 0.08 1.5)
  4.                (4.2 "M5" 0.1 2.5)
  5.                (5.0 "M6" 0.12 3.0)
  6.                (6.8 "M8" 0.16 4.0)
  7.                (8.5 "M10" 0.2 5.0)
  8.                (10.5 "M12" 0.24 6.0)
  9.                (12.0 "M14" 0.28 7.0)
  10.                (14.0 "M16" 0.32 8.0)
  11.                (15.5 "M18" 0.36 9.0)
  12.                (17.5 "M20" 0.4 10.0)
  13.               )
  14.    )

更改为:
  1.    (setq lst '((1.25 "M3" 0.06 1.5)
  2.                (1.65 "M4" 0.08 1.5)
  3.                (2.10 "M5" 0.1 2.5)
  4.                (2.50 "M6" 0.12 3.0)
  5.                (3.40 "M8" 0.16 4.0)
  6.                (4.25 "M10" 0.2 5.0)
  7.                (5.25 "M12" 0.24 6.0)
  8.                (6.00 "M14" 0.28 7.0)
  9.                (7.00 "M16" 0.32 8.0)
  10.                (7.75 "M18" 0.36 9.0)
  11.                (8.75 "M20" 0.4 10.0)
  12.               )
  13.    )

 
如果我也想用直径。我该如何改变?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:08 , Processed in 0.468482 second(s), 72 queries .

© 2020-2025 乐筑天下

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