乐筑天下

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

[编程交流] 这个Lisp程序怎么了

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 14:34:15 | 显示全部楼层 |阅读模式
此lisp表示坐标
 
按顺序单击点,然后创建一个带有点编号和X&Y的表
 
当运行routen时
它可以拾取点并插入点编号
但无法创建表
 
我希望找到一个解决方案或类似的lisp
 
 
  1. (defun derr (s)                       ; If an error (such as CTRL-C) occurs
  2.                                      ; while this command is active...
  3. (if (/= s "Function cancelled")
  4.    (princ (strcat "\n*Error: " s))
  5. )
  6. (setvar "cmdecho" echo)
  7. (setvar "blipmode" blip)
  8. (setvar "luprec" decimal)
  9. (setq *error* olderr)               ; Restore old *error* handler
  10. (close file)
  11. (princ)
  12. )
  13. ;----------------------------------------------------------------------------
  14. (defun c:pt()
  15.   (setq olderr *error*
  16.                *error* derr)
  17.   (setq echo (getvar "cmdecho"))
  18.   (setq blip (getvar "blipmode"))
  19.   (setq decimal (getvar "luprec"))
  20.   (setvar "cmdecho" 0)
  21.   (setvar "blipmode" 0)
  22.      (setq pt_file (getstring "\nPoints File Name <points.txt>:"))
  23.      (if (= pt_file "")
  24.          (setq file (open "points.txt" "w"))
  25.          (setq file (open pt_file "w"))
  26.      )
  27.      (setq h-scale (getint "\nHorizontal Scale  1:"))
  28.      (setq pre_code (getstring "\nPrefix Code:"))
  29.      (setq start_pn (getint "\nStart Number:"))
  30.      (setq pn  start_pn)
  31.      (setq hs-factor (/ h-scale 100))
  32.      (setq p 0)
  33.      (setq n 1)
  34.      (while p
  35.             (setq p (getpoint "\nSelect Point <Exit>:"))
  36.             (if p
  37.                 (progn
  38.                    (setq str_pn (itoa pn))
  39.                    (setq pt_code (strcat pre_code str_pn))
  40.                    (setq ptxt (list
  41.                                  (- (car p) (* 0.5 hs-factor))
  42.                                  (+ (cadr p) (* 0.5 hs-factor))
  43.                               ))
  44.                    (command "point" p)
  45.                    (command "text" "m" ptxt "0" pt_code)
  46.                    ;Writting Selected point to the file
  47.                    ;-----------------------------------
  48.                    (princ (strcat "\n" pt_code " " (rtos (car p)) " "
  49.                                   (rtos (cadr p)) ) file)
  50.                    (setq pn (+ pn 1))
  51.                    (setq pt_list1 (list (append (list pt_code) p)))
  52.                    (if (= n 1)
  53.                        (setq pt_list pt_list1)
  54.                        (setq pt_list (append pt_list pt_list1))
  55.                    )
  56.                    (setq n (+ n 1))
  57.                 )
  58.             )
  59.      )
  60.   (prompt "\n** Points Coordinates Table **")
  61.   (setq p_l_up (getpoint "\nSelect Upper Left Cornner :\n"))
  62.   (setq p_r_up (list (+ (car p_l_up) (* 7.2 hs-factor))
  63.                      (cadr p_l_up) ))
  64.   (setq ph1 (list (car P_l_up)
  65.                   (- (cadr p_l_up) (* 1 hs-factor)) ))
  66.   (setq ph2 (list (car P_r_up)
  67.                   (- (cadr p_r_up) (* 1 hs-factor)) ))
  68.   (setq ph_txt1 (list (+ (car p_l_up) (* 0.6 hs-factor))
  69.                       (- (cadr p_l_up) (* 0.5 hs-factor)) ))
  70.   (setq ph_txt2 (list (+ (car p_l_up) (* 2.7 hs-factor))
  71.                       (- (cadr p_l_up) (* 0.5 hs-factor)) ))
  72.   (setq ph_txt3 (list (+ (car p_l_up) (* 5.7 hs-factor))
  73.                       (- (cadr p_l_up) (* 0.5 hs-factor)) ))
  74.   (command "line" p_l_up p_r_up "")
  75.   (command "line" ph1 ph2 "")
  76.   (command "text" "m" ph_txt1 "0" "Pt.")
  77.   (command "text" "m" ph_txt2 "0" "X")
  78.   (command "text" "m" ph_txt3 "0" "Y")
  79.   (setq len_ptlst (length pt_list))
  80.   (setq n_lst 0)
  81.   (repeat len_ptlst
  82.           (progn
  83.              (setq p1 (list (car ph1)
  84.                             (- (cadr ph1) (* 1 (+ n_lst 1) hs-factor)) ))
  85.              (setq p2 (list (car ph2)
  86.                             (- (cadr ph2) (* 1 (+ n_lst 1) hs-factor)) ))
  87.              (setq ptxt1 (list
  88.                            (car ph_txt1)
  89.                            (- (cadr ph_txt1)(* 1 (+ n_lst 1) hs-factor)) ))
  90.              (setq ptxt2 (list
  91.                            (car ph_txt2)
  92.                            (- (cadr ph_txt2)(* 1 (+ n_lst 1) hs-factor)) ))
  93.              (setq ptxt3 (list
  94.                            (car ph_txt3)
  95.                            (- (cadr ph_txt3)(* 1 (+ n_lst 1) hs-factor)) ))
  96.              (setq x (rtos (nth 1 (nth n_lst pt_list))))
  97.              (setq y (rtos (nth 2 (nth n_lst pt_list))))
  98.              (princ (strcat "\rPoint Number " (nth 0 (nth n_lst pt_list))))
  99.              (command "text" "m" ptxt1 "0" (nth 0 (nth n_lst pt_list)))
  100.              (command "text" "m" ptxt2 "0" x)
  101.              (command "text" "m" ptxt3 "0" y)
  102.              (command "line" p1 p2 "")
  103.           )
  104.           (setq n_lst (+ n_lst 1))
  105.   )
  106.   (setq pv1 (list (+ (car p_l_up) (* 1.2 hs-factor))
  107.                   (cadr p_l_up) ))
  108.   (setq pv2 (list (+ (car p_l_up) (* 4.2 hs-factor))
  109.                   (cadr p_l_up) ))
  110.   (setq pv3 (list (+ (car p1) (* 1.2 hs-factor))
  111.                   (cadr p1) ))
  112.   (setq pv4 (list (+ (car p1) (* 4.2 hs-factor))
  113.                   (cadr p1) ))
  114.   (command "line" p_l_up p1 "")
  115.   (command "line" pv1 pv3 "")
  116.   (command "line" pv2 pv4 "")
  117.   (command "line" p_r_up p2 "")
  118.   (setvar "cmdecho" echo)
  119.   (setvar "blipmode" blip)
  120.   (setvar "luprec" decimal)
  121.   (setq *error* olderr)               ; Restore old *error* handler
  122.   (close file)
  123.   (princ)
  124. )
回复

使用道具 举报

10

主题

253

帖子

75

银币

后起之秀

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

铜币
223
发表于 2022-7-6 15:06:42 | 显示全部楼层
可以使用ACAD_表对象吗?
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

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

铜币
262
发表于 2022-7-6 15:43:37 | 显示全部楼层
事实上,我没有Lisp程序的经验
我如何使用这些对象?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:23 , Processed in 0.313816 second(s), 58 queries .

© 2020-2025 乐筑天下

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