乐筑天下

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

[编程交流] 请帮忙把这个街区弄进去

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:18:57 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我有一个简单的程序,我想改进(希望有你的帮助)。
 
该例程非常简单——它将在用户确定的位置插入一个带引线的孔注释(块)。该例程将提示用户输入三个点以及孔的数量和直径。
 
目前我在这个例程中遇到的唯一问题是…我有一个holenote块,它只适用于指向一个方向的孔注释。我想给例程添加一个条件,根据用户选择的点插入一个块。请参阅随附的草图以获得更清晰的解释。第一个图像是例程当前的运行方式——这在这个方向上很好。第二个问题是它目前是如何运行的——方向相反。第三个图像是我希望它以相反的方向运行。
 
所以…我在想/希望有人能帮我调整例程,允许插入不同的块,这取决于第三个点的X值是大于还是小于第二个点的X值。
 
我想设置的另一件事是,如果孔的数量只有1…STRCAT函数将使用“/%%C”AHdia“HOLE”(而不是孔)编译。
 
  1. (Defun c:AH ()
  2. (SETVAR "ORTHOMODE" 0)
  3. (SETQ AHSCALE (GETVAR "DIMSCALE"))
  4. (command "-layer" "set" "1dl" "")
  5. (SETQ AHPT1 (GETPOINT))
  6. (SETQ AHPT2 (GETPOINT AHPT1))
  7. (command "QLEADER" AHPT1 AHPT2 NIL)
  8. (SETVAR "ORTHOMODE" 1)
  9. (SETQ AHPT3 (GETPOINT AHPT2))
  10. (SETQ AHQTY (getstring "\nEnter Quantity of Holes : " XX))
  11. (SETQ AHdia (getstring "\nEnter Diameter of Holes : " XX))
  12. (setq ahnote (strcat AHQTY"/%%C"AHdia" HOLES"))
  13. (COMMAND "INSERT" "holenote" AHPT2 AHSCALE "" "" ahnote "")
  14. (princ)
  15. )

 
非常感谢您的帮助。
 
001902z5m2y43mmprz9f4f.jpg
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:29:39 | 显示全部楼层
??
 
  1. (defun c:AH (/ *error* om cm p1 p2 p3 q d)
  2. (defun *error* (msg)
  3.    (redraw)
  4.    (and om (setvar 'ORTHOMODE om))
  5.    (and cm (setvar 'CMDECHO cm))
  6.    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
  7.      (princ (strcat "\nError: " msg))
  8.    )
  9. )
  10. (setq om (getvar 'ORTHOMODE)
  11.        cm (getvar 'CMDECHO)
  12. )
  13. (setvar 'ORTHOMODE 0)
  14. (setvar 'CMDECHO 0)
  15. (if (and (setq p1 (getpoint "\nSpecify first point: "))
  16.           (setq p2 (getpoint p1 "\nSpecify next point: "))
  17.           (progn (grdraw p1 p2 256) (setvar 'ORTHOMODE 1))
  18.           (setq p3 (getpoint p2 "\nSpecify landing point: "))
  19.           (progn (grdraw p2 p3 256) (initget 6) (setq q (getint "\nSpecify quantity of holes: ")))
  20.           (progn (initget 6) (setq d (getint "\nSpecify diameter of holes: ")))
  21.      )
  22.    (command "_.leader"
  23.             "_non"
  24.             p1
  25.             "_non"
  26.             p2
  27.             "_non"
  28.             p3
  29.             "_A"
  30.             (strcat (itoa q) "/%%C" (itoa d) " HOLE")
  31.             ""
  32.    )
  33. )
  34. (*error* nil)
  35. (princ)
  36. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:48:15 | 显示全部楼层
1你需要确定你在哪个象限,然后以正确的方式绘制引线。只需检查ahpt1和ahpt2之间的角度,比较0-90 90-180 180-270 270 270-360,但在弧度中,使用4种不同的方式绘制。可能基于第一个点对正确绘制的第二个点进行一些极坐标计算,但使用第二个拾取点作为近似猜测。
 
2个孔很容易更改strcat,如果孔大于1,则使用if语句,然后孔=孔,否则孔=孔
 
  1. (if (< ahqty 1)
  2. (setq ahnote (strcat AHQTY"/%%C"AHdia" HOLE"))
  3. (setq ahnote (strcat AHQTY"/%%C"AHdia" HOLES"))
  4. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-5 23:49:44 | 显示全部楼层
  1. (defun c:AH (/ *error* om cm p1 p2 p3 q d)
  2. (defun *error* (msg)
  3.    (redraw)
  4.    (and om (setvar 'ORTHOMODE om))
  5.    (and cm (setvar 'CMDECHO cm))
  6.    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
  7.      (princ (strcat "\nError: " msg))
  8.    )
  9. )
  10. (setq om (getvar 'ORTHOMODE)
  11.        cm (getvar 'CMDECHO)
  12. )
  13. (setvar 'ORTHOMODE 0)
  14. (setvar 'CMDECHO 0)
  15. (if (and (setq p1 (getpoint "\nSpecify first point: "))
  16.           (setq p2 (getpoint p1 "\nSpecify next point: "))
  17.           (progn (grdraw p1 p2 256) (setvar 'ORTHOMODE 1))
  18.           (setq p3 (getpoint p2 "\nSpecify landing point: "))
  19.           (progn (grdraw p2 p3 256) (initget 6) (setq q (getint "\nSpecify quantity of holes: ")))
  20.           (progn (initget 6) (setq d (getint "\nSpecify diameter of holes: ")))
  21.      )
  22.    (command "_.leader"
  23.             "_non"
  24.             p1
  25.             "_non"
  26.             p2
  27.             "_non"
  28.             p3
  29.             "_A"
  30.             (strcat (itoa q)
  31.                     "/%%C"
  32.                     (itoa d)
  33.                     (if (> q 1)
  34.                       " HOLES"
  35.                       " HOLE"
  36.                     )
  37.             )
  38.             ""
  39.    )
  40. )
  41. (*error* nil)
  42. (princ)
  43. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:00:01 | 显示全部楼层
哇,AlanJT趁我打字的时候偷偷把那一个拿走了
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 00:12:14 | 显示全部楼层
哦,废话,
 
我只是在阅读我的一些旧帖子,寻找一个我可能开始或可能没有开始的帖子。。。然后意识到我从来没有回应过这个。
 
很抱歉我这么粗鲁。非常感谢你的帮助。这就是我用来创建孔注释的例程,它非常棒。
 
再次感谢,再次抱歉。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:20:59 | 显示全部楼层
 
哈哈。迟到总比不到好。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:28 , Processed in 0.375168 second(s), 69 queries .

© 2020-2025 乐筑天下

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