乐筑天下

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

[编程交流] DCL和Lisp插入点a

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:37:41 | 显示全部楼层
这是一种不同的方法,使用您预加载的全局库defun,您可以在任何例程中使用它。这是2个问题的示例,以前在别处发布的代码用于1、2或3行输入。它动态创建dcl,因此不需要硬编码。
 
 
  1. ; 2 line dcl save as a library function a nd autoload
  2. ; sample code (ah:getval2 "line 1" 4 3 "line2" 8 7)
  3. (defun AH:getval2 (title1 width1 limit1 title2 width2 limit2 / fo)
  4. ;(setq fname (strcat (getvar "SAVEFILEPATH") "\\getval2.dcl"))
  5. (setq fname (strcat (getenv "TEMP") "\\getval2.dcl"))
  6. (setq fo (open fname "w"))
  7. (write-line "ddgetval2 : dialog {" fo)
  8. (write-line " : column {" fo)
  9. (write-line ": edit_box {" fo)
  10. (write-line (strcat "    key = " (chr 34) "key1" (chr 34) ";") fo)
  11. (write-line  (strcat " label = "  (chr 34) title1 (chr 34) ";" ) fo)
  12. (write-line (strcat "     edit_width = " (rtos width1 2 0) ";" ) fo)
  13. (write-line (strcat "     edit_limit = " (rtos limit1 2 0) ";" ) fo)
  14. (write-line "   is_enabled = true ;" fo)
  15. (write-line "    }" fo)
  16. (write-line "spacer_1 ;" fo)
  17. (write-line ": edit_box {" fo)
  18. (write-line (strcat "    key = " (chr 34) "key2" (chr 34) ";") fo)
  19. (write-line (strcat " label = "  (chr 34) title2 (chr 34) ";"  ) fo)
  20. (write-line (strcat "     edit_width = " (rtos width2 2 0) ";" ) fo)
  21. (write-line (strcat "     edit_limit = " (rtos limit2 2 0) ";" ) fo)
  22. (write-line "   is_enabled = true ;" fo)
  23. (write-line "    }" fo)
  24. (write-line "    }" fo)
  25. (write-line "spacer_1 ;" fo)
  26. (write-line "ok_only;}" fo)
  27. (close fo)
  28. ; code part
  29. (setq dcl_id (load_dialog  fname))
  30. (if (not (new_dialog "ddgetval2" dcl_id))
  31. (exit))
  32. (mode_tile "key1" 3)
  33. (action_tile "key1" "(setq val1 $value)")
  34. (mode_tile "key2" 3)
  35. (action_tile "key2" "(setq val2 $value)")
  36. (start_dialog)
  37. (done_dialog)
  38. (unload_dialog dcl_id)
  39. ; returns the value of val1 and val2 as strings
  40. )

 
  1. (ah:getval2 "MOVE IN X OR Y enter value X or Y" 4 3  "ENTER OFFSET VALUE -VE OR +VE <L-R U-D>" 8 7)
  2. (IF (= VAL1 (STRCASE "X"))(c:ptx)(c:pty))
  3. (defun c:PTX ( / Pt)
  4. (setq oldsnap (getvar "osmode'))
  5. (setq pt (getpoint "pick point"))
  6. (setvar "osmode" 0)
  7. (command "point" pt)
  8. (Command "Move" "L" "" (list 0 0 0) (list (rtos val2) 0 0))
  9. (setvar "osmode" oldsnap)
  10. )
  11. (defun c:PTY ( / Pt )
  12. (setq oldsnap (getvar "osmode'))
  13. (setq pt (getpoint "pick point"))
  14. (setvar "osmode" 0)
  15. (command "point" pt)
  16. (Command "Move" "L" "" (list 0 0 0) (list 0 (rtos val2) 0))
  17. (setvar "osmode" oldsnap)
  18. )
回复

使用道具 举报

7

主题

34

帖子

27

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:40:30 | 显示全部楼层
 
我必须删除
  1. ;(vla-regen (vla-get-activedocument (vlax-get-acad-object))
  2.             ;acallviewports
  3.            ; )
  4. ;(vl-load-com)

而且我也不知道如何把它改成“mval”除以12。此外,点的旧值是什么,点的新值是什么?
这肯定比我写得好,但剖析它并不容易。
我需要的是,插入点,根据dcl(我们已经涵盖了这两个)在给定的方向和距离上移动点,然后给出从原始插入点到新点的尺寸,最后通过所有点连接一条线。
关于通过所有点连接一条线的最后一部分在后面介绍,可能不可能。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:47:21 | 显示全部楼层
举个例子,剩下的你可以做。
 
  1. (/ (read (get_tile "mval")) 12.)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:51:04 | 显示全部楼层
我有点困惑,你评论说,你想用它来处理多个点,你可以这么简单,按F8这将打开正交,你选择你的起点,然后用鼠标在所需的方向拖动,然后简单地键入所需的距离,你可以继续画正方形。如果使用pline选项,则很容易自动调暗pline。
 
  1. ; have a look at this try it with ortho on and dragging mouse typing distance its just so quick 2 lines of code compare to above
  2. (command "_pline")
  3. (while (= (getvar "cmdactive") 1 ) (command pause))
回复

使用道具 举报

7

主题

34

帖子

27

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 19:53:12 | 显示全部楼层
 
用户将从一个网格开始,为了简单起见,假设它是一个3x3网格18x36。这是6行12列。点(节点)是每个周长点的布局,因为它穿过网格的垂直线或水平线。为了获得该点的位置,需要从网格的最近顶点到边缘进行测量。因此,用户选择从中测量的顶点,到边缘点的距离,然后选择该点从顶点开始的方向。同样,这只是沿周长布置点的过程的一部分。我已经自动化了网格布局,10次中有9次不是给定大小的简单3x3网格。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:34 , Processed in 0.880688 second(s), 60 queries .

© 2020-2025 乐筑天下

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