乐筑天下

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

[编程交流] 更新a。lsp帮助

[复制链接]

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:07:07 | 显示全部楼层
非常感谢。。。代码对我来说是新的,我想了解更多关于它和如何使用它。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:11:40 | 显示全部楼层
我决定找点乐子。我不处理表(c3d有更好的动态表),所以我从那个花边抢走了。
 
  1. (defun c:Bearings (/ *error* _draw _angle _fix _dist cmd dzn ucs first lst pt finalList tablePoint
  2.                   row tsize table)
  3. ;; Point connections to Table with bearings and distances
  4. ;; Alan J. Thompson, 2013.05.29
  5. (vl-load-com)
  6. (defun *error* (msg)
  7.    (redraw)
  8.    (and ucs (vl-cmdf "_.UCS" "_P"))
  9.    (and cmd (setvar 'CMDECHO cmd))
  10.    (and dzn (setvar 'DIMZIN dzn))
  11.    (and *AcadDoc* (vla-endundomark *AcadDoc*))
  12.    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
  13.      (progn (vl-bt) (princ (strcat "\nError: " msg)))
  14.    )
  15. )
  16. (defun _draw (lst)
  17.    (redraw)
  18.    (mapcar (function (lambda (a b) (grdraw a b 3 1))) (cons (last lst) lst) lst)
  19. )
  20. (defun _angle (p1 p2 / a)
  21.    (setq a (angtos (angle p1 p2) 4 4))
  22.    (cond ((cdr (assoc a '(("N" . "NORTH") ("S" . "SOUTH") ("E" . "EAST") ("W" . "WEST")))))
  23.          ((_fix a))
  24.    )
  25. )
  26. (defun _fix (s / i l a)
  27.    (setq s (vl-string-subst "°" "d" s))
  28.    (foreach v '(" " "°" "'" """ " ")
  29.      (setq a (substr s 1 (setq i (vl-string-search v s))))
  30.      (if (and (member v '("°" "'" """)) (eq (strlen a) 1))
  31.        (setq a (strcat "0" a))
  32.      )
  33.      (setq l (cons a l)
  34.            s (substr s (+ i 2))
  35.      )
  36.    )
  37.    (apply 'strcat
  38.           (apply 'append
  39.                  (mapcar (function (lambda (a b) (list a b)))
  40.                          (reverse (cons s l))
  41.                          '(" " "°" "'" "" " "" "")
  42.                  )
  43.           )
  44.    )
  45. )
  46. (defun _dist (p1 p2) (strcat (rtos (distance p1 p2) 2 2) "'"))
  47. (vla-startundomark
  48.    (cond (*AcadDoc*)
  49.          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  50.    )
  51. )
  52. (setq dzn (getvar 'DIMZIN))
  53. (setvar 'DIMZIN 0)
  54. (if (zerop (getvar 'WORLDUCS))
  55.    (progn (setq cmd (getvar 'CMDECHO))
  56.           (setvar 'CMDECHO 0)
  57.           (vl-cmdf "_.UCS" "")
  58.    )
  59. )
  60. (redraw)
  61. (initget 4)
  62. (setq *Bearings:Count*
  63.         (cond ((getint (strcat "\nSpecify starting number <"
  64.                                (itoa (cond (*Bearings:Count*)
  65.                                            ((setq *Bearings:Count* 1))
  66.                                      )
  67.                                )
  68.                                ">: "
  69.                        )
  70.                )
  71.               )
  72.               (*Bearings:Count*)
  73.         )
  74. )
  75. (setq first (itoa *Bearings:Count*))
  76. (if (car (setq lst (list (getpoint
  77.                             (strcat "\nSpecify point for number " (itoa *Bearings:Count*) ": ")
  78.                           )
  79.                     )
  80.           )
  81.      )
  82.    (progn
  83.      (while
  84.        (setq pt (getpoint (car lst)
  85.                           (strcat "\nSpecify point for number "
  86.                                   (itoa (1+ *Bearings:Count*))
  87.                                   ": "
  88.                           )
  89.                 )
  90.        )
  91.         (_draw (setq lst (cons pt lst)))
  92.         (setq finalList (cons (list (strcat (itoa *Bearings:Count*)
  93.                                             " - "
  94.                                             (itoa (setq *Bearings:Count* (1+ *Bearings:Count*)))
  95.                                     )
  96.                                     (_angle (cadr lst) (car lst))
  97.                                     (_dist (cadr lst) (car lst))
  98.                               )
  99.                               finalList
  100.                         )
  101.         )
  102.      )
  103.      (if (and finalList (setq tablePoint (getpoint "\nSpecify insertion point for table: ")))
  104.        (progn
  105.          (if (> (length finalList) 1)
  106.            (setq finalList (cons (list (strcat (itoa *Bearings:Count*) " - " first)
  107.                                        (_angle (car lst) (last lst))
  108.                                        (_dist (car lst) (last lst))
  109.                                  )
  110.                                  finalList
  111.                            )
  112.            )
  113.          )
  114.          (setq finalList (reverse finalList))
  115.          (setq row   1
  116.                tsize (getvar 'TEXTSIZE)
  117.                table (vlax-invoke
  118.                        (vlax-get-property
  119.                          *AcadDoc*
  120.                          (if (eq (getvar 'CVPORT) 1)
  121.                            'PaperSpace
  122.                            'ModelSpace
  123.                          )
  124.                        )
  125.                        'AddTable
  126.                        tablePoint
  127.                        (+ (length finalList) 2)
  128.                        3
  129.                        (* tsize 2.)
  130.                        (* tsize 15.)
  131.                      )
  132.          )
  133.          (vla-put-regeneratetablesuppressed table :vlax-true)
  134.          (vla-settextheight table actitlerow tsize)
  135.          (vla-settextheight table acheaderrow tsize)
  136.          (vla-settextheight table acdatarow tsize)
  137.          (vla-put-vertcellmargin table (/ tsize 4.25))
  138.          (vla-settext table 0 0 "COURSE TABLE")
  139.          (vla-settext table 1 0 "COURSE")
  140.          (vla-settext table 1 1 "BEARING")
  141.          (vla-settext table 1 2 "DISTANCE")
  142.          (foreach item finalList
  143.            (setq row (1+ row))
  144.            (foreach n '(0 1 2)
  145.              (vla-settext table row n (nth n item))
  146.              (vla-setcellalignment table row n acMiddleCenter)
  147.            )
  148.          )
  149.          (vla-put-regeneratetablesuppressed table :vlax-false)
  150.        )
  151.      )
  152.    )
  153. )
  154. (*error* nil)
  155. (princ)
  156. )
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:15:31 | 显示全部楼层
很好,那比另一个好得多。唯一的问题是,它仍在接近这个数字:
 
1000-1001
1001-1002
1002-1003
1003-1000
 
你们可能知道如何在睡梦中写这些东西。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:17:12 | 显示全部楼层
放屁。我一定错过了,你不想让它关上。午饭后我会发些东西。我得吃饭了!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:20:06 | 显示全部楼层
呃,只花了一秒钟。。。
 
  1. (defun c:Bearings (/ *error* _draw _angle _fix _dist cmd dzn ucs first lst pt finalList tablePoint
  2.                   row tsize table)
  3. ;; Point connections to Table with bearings and distances
  4. ;; Alan J. Thompson, 2013.05.29
  5. (vl-load-com)
  6. (defun *error* (msg)
  7.    (redraw)
  8.    (and ucs (vl-cmdf "_.UCS" "_P"))
  9.    (and cmd (setvar 'CMDECHO cmd))
  10.    (and dzn (setvar 'DIMZIN dzn))
  11.    (and *AcadDoc* (vla-endundomark *AcadDoc*))
  12.    (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
  13.      (progn (vl-bt) (princ (strcat "\nError: " msg)))
  14.    )
  15. )
  16. (defun _draw (lst)
  17.    (redraw)
  18.    (mapcar (function (lambda (a b) (grdraw a b 3 1))) lst (cdr lst))
  19. )
  20. (defun _angle (p1 p2 / a)
  21.    (setq a (angtos (angle p1 p2) 4 4))
  22.    (cond ((cdr (assoc a '(("N" . "NORTH") ("S" . "SOUTH") ("E" . "EAST") ("W" . "WEST")))))
  23.          ((_fix a))
  24.    )
  25. )
  26. (defun _fix (s / i l a)
  27.    (setq s (vl-string-subst "°" "d" s))
  28.    (foreach v '(" " "°" "'" """ " ")
  29.      (setq a (substr s 1 (setq i (vl-string-search v s))))
  30.      (if (and (member v '("°" "'" """)) (eq (strlen a) 1))
  31.        (setq a (strcat "0" a))
  32.      )
  33.      (setq l (cons a l)
  34.            s (substr s (+ i 2))
  35.      )
  36.    )
  37.    (apply 'strcat
  38.           (apply 'append
  39.                  (mapcar (function (lambda (a b) (list a b)))
  40.                          (reverse (cons s l))
  41.                          '(" " "°" "'" "" " "" "")
  42.                  )
  43.           )
  44.    )
  45. )
  46. (defun _dist (p1 p2) (strcat (rtos (distance p1 p2) 2 2) "'"))
  47. (vla-startundomark
  48.    (cond (*AcadDoc*)
  49.          ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
  50.    )
  51. )
  52. (setq dzn (getvar 'DIMZIN))
  53. (setvar 'DIMZIN 0)
  54. (if (zerop (getvar 'WORLDUCS))
  55.    (progn (setq cmd (getvar 'CMDECHO))
  56.           (setvar 'CMDECHO 0)
  57.           (vl-cmdf "_.UCS" "")
  58.    )
  59. )
  60. (redraw)
  61. (initget 4)
  62. (setq *Bearings:Count*
  63.         (cond ((getint (strcat "\nSpecify starting number <"
  64.                                (itoa (cond (*Bearings:Count*)
  65.                                            ((setq *Bearings:Count* 1))
  66.                                      )
  67.                                )
  68.                                ">: "
  69.                        )
  70.                )
  71.               )
  72.               (*Bearings:Count*)
  73.         )
  74. )
  75. (setq first (itoa *Bearings:Count*))
  76. (if (car (setq lst (list (getpoint
  77.                             (strcat "\nSpecify point for number " (itoa *Bearings:Count*) ": ")
  78.                           )
  79.                     )
  80.           )
  81.      )
  82.    (progn
  83.      (while
  84.        (setq pt (getpoint (car lst)
  85.                           (strcat "\nSpecify point for number "
  86.                                   (itoa (1+ *Bearings:Count*))
  87.                                   ": "
  88.                           )
  89.                 )
  90.        )
  91.         (_draw (setq lst (cons pt lst)))
  92.         (setq finalList (cons (list (strcat (itoa *Bearings:Count*)
  93.                                             " - "
  94.                                             (itoa (setq *Bearings:Count* (1+ *Bearings:Count*)))
  95.                                     )
  96.                                     (_angle (cadr lst) (car lst))
  97.                                     (_dist (cadr lst) (car lst))
  98.                               )
  99.                               finalList
  100.                         )
  101.         )
  102.      )
  103.      (if (and finalList (setq tablePoint (getpoint "\nSpecify insertion point for table: ")))
  104.        (progn
  105.          (setq finalList (reverse finalList)
  106.                row       1
  107.                tsize     (getvar 'TEXTSIZE)
  108.                table     (vlax-invoke
  109.                            (vlax-get-property
  110.                              *AcadDoc*
  111.                              (if (eq (getvar 'CVPORT) 1)
  112.                                'PaperSpace
  113.                                'ModelSpace
  114.                              )
  115.                            )
  116.                            'AddTable
  117.                            tablePoint
  118.                            (+ (length finalList) 2)
  119.                            3
  120.                            (* tsize 2.)
  121.                            (* tsize 15.)
  122.                          )
  123.          )
  124.          (vla-put-regeneratetablesuppressed table :vlax-true)
  125.          (vla-settextheight table actitlerow tsize)
  126.          (vla-settextheight table acheaderrow tsize)
  127.          (vla-settextheight table acdatarow tsize)
  128.          (vla-put-vertcellmargin table (/ tsize 4.25))
  129.          (vla-settext table 0 0 "COURSE TABLE")
  130.          (vla-settext table 1 0 "COURSE")
  131.          (vla-settext table 1 1 "BEARING")
  132.          (vla-settext table 1 2 "DISTANCE")
  133.          (foreach item finalList
  134.            (setq row (1+ row))
  135.            (foreach n '(0 1 2)
  136.              (vla-settext table row n (nth n item))
  137.              (vla-setcellalignment table row n acMiddleCenter)
  138.            )
  139.          )
  140.          (vla-put-regeneratetablesuppressed table :vlax-false)
  141.        )
  142.      )
  143.    )
  144. )
  145. (*error* nil)
  146. (princ)
  147. )

 
现在,吃东西的时间到了。
回复

使用道具 举报

2

主题

10

帖子

8

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:23:08 | 显示全部楼层
谢谢谢谢。。。总有一天我会像你们这些特别聪明的人一样学会如何做到这一点。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:28:51 | 显示全部楼层
不客气。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:30:40 | 显示全部楼层
 
 
艾伦,你忙了12个小时了。。。。砰!我对使用grdraw有相同的想法,唯一的问题是为什么OP使用端点捕捉?我猜想这些线是存在的,如果是这样,那么就不需要grdraw了?
 
另一种方法是选择直线/多段线或拾取起点/终点,然后选择对象[如果目标点位于段之间]
 
随便。Alanjt的荣誉
 
 
只要在这个论坛上闲逛,我相信你一定会成功的。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:34:38 | 显示全部楼层
 
是的,这不是不可能的,但它只会发生在那种闲逛的时候,包括大量持续的艰苦工作! 
是的,同意。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 00:35:36 | 显示全部楼层
哈哈。昨天早上我有点时间消磨。
 
伙计,我希望他不是在选台词,或者这整件事都很愚蠢,因为他有civil 3d。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:44 , Processed in 0.430682 second(s), 70 queries .

© 2020-2025 乐筑天下

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