明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 410|回复: 9

[源码] 提个问题,关于我写的这个(拐点坐标提取及标注点号)小垃圾

[复制链接]
发表于 2024-11-1 19:17:05 | 显示全部楼层 |阅读模式


怎么设置这个程序结束后图层还原成0图层呢?
还有就是命令行提示一堆未知命令怎么回事啊?
大佬给修改一下!
零零散散没学习了几天,有问题都不知道咋处理!

下面是代码:
(defun c:gd991 ( / k zbd xzb yzb gd xgd ygd)
(SETVAR "CMDECHO" 0)
  (if (= (TBLSEARCH "layer" "拐点坐标") nil)
  (PROGN (command "layer")
    (command "m" "拐点坐标" "c" "7" "" ""))
    (PROGN (command "layer")
                    (command "on" "拐点坐标" "s" "拐点坐标" "" "")))
(setq k (getint "\n 请输入编号<默认1>:"))
(if (= k nil)
   (setq k 1))
  (while
(setq zbd (getpoint "\n 请点击范围拐点"))
(setq xzb (rtos (nth 1 zbd) 2 3))
(setq yzb (rtos (nth 0 zbd) 2 3))
       (command "text" "s" "宋体" zbd "1" "" (itoa k) "")
(setq gd (getpoint "标注坐标点位置"))
(setq xgd (rtos (nth 1 gd) 2 3))
(setq ygd (rtos (nth 0 gd) 2 3))
(command "text" "s" "宋体" gd "1" "" (strcat (itoa k) ":" "X:" xzb "," "Y:" yzb) "")
(setq k (1+ k))
)
  (princ)
  )


发表于 2024-11-1 19:53:24 | 显示全部楼层
  1. (defun c:gd991 (/ gd k xgd xzb ygd yzb zbd)
  2.         (if (null (tblsearch "layer" "拐点坐标"))
  3.                 (entmake (list '(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")(cons 2 "拐点坐标")(cons 62 7)'(70 . 0)'(6 . "CONTINUOUS")))
  4.         )
  5.         (setq k (getint "\n请输入编号<1>:"))
  6.         (if (= k nil) (setq k 1))
  7.   (while (setq zbd (getpoint "\n请点击范围拐点:"))
  8.                 (setq xzb (rtos (nth 1 zbd) 2 3))
  9.                 (setq yzb (rtos (nth 0 zbd) 2 3))
  10.                 (entmake(list '(0 . "text")(cons 8 "拐点坐标")'(50 . 0.0)(cons 10 zbd)(cons 11 zbd)(cons 1 (itoa k));|'(7 . "宋体")|;(cons 40 1)'(6 . "Continuous")'(41 . 0.8)'(72 . 0)'(210 0.0 0.0 1.0)'(100 . "AcDbText")'(73 . 0)))
  11.                 (setq gd (getpoint "\n标注坐标点位置:"))
  12.                 (setq xgd (rtos (nth 1 gd) 2 3))
  13.                 (setq ygd (rtos (nth 0 gd) 2 3))
  14.                 (entmake(list '(0 . "text")(cons 8 "拐点坐标")'(50 . 0.0)(cons 10 gd)(cons 11 gd)(cons 1 (strcat (itoa k) ":" "X:" xzb "," "Y:" yzb));|'(7 . "宋体")|;(cons 40 1)'(6 . "Continuous")'(41 . 0.8)'(72 . 0)'(210 0.0 0.0 1.0)'(100 . "AcDbText")'(73 . 0)))
  15.                 (setq k (1+ k))
  16.         )
  17.   (princ)
  18. )
发表于 2024-11-1 22:34:49 | 显示全部楼层
新手编程可以循序渐进,可以先学会用command命令,要求输入的每个参数,就相当于在绘图界面里输入的一样,回车就是“”,程序中多了一个“”,就会显示错误,等有一定基础了,再用entmake来创建各种实体,因为找执行效率更高,速度更快。

掌握一些系统变量的应用
用这句可以快速切换成“0”层
(setvar "clayer" 0)
 楼主| 发表于 2024-11-1 23:25:48 来自手机 | 显示全部楼层
ljpnb 发表于 2024-11-1 22:34
新手编程可以循序渐进,可以先学会用command命令,要求输入的每个参数,就相当于在绘图界面里输入的一样, ...

感谢您的指导!我按照您说的学一下,对CAD的一些变量和命令都不熟悉!有点急于求成了!
 楼主| 发表于 2024-11-1 23:27:33 来自手机 | 显示全部楼层
飞雪神光 发表于 2024-11-1 19:53

感谢您给解答和回复!学习了!
发表于 2024-11-2 06:33:49 | 显示全部楼层
  1. (defun c:tt ()
  2. (defun Uint (bit kwd msg def / inp)
  3.   (if def
  4.     (setq msg (strcat "\n" msg "<" (itoa def) ">: ") bit (* 2 (fix (/ bit 2))))
  5.     (setq msg (strcat "\n" msg ": "))
  6.   )
  7.   (initget bit kwd)
  8.   (setq inp (getint msg))
  9.   (if inp inp def)
  10. )
  11.   (setq la (getvar "clayer"))
  12.   (setvar "cmdecho" 0)
  13.   (command "-layer" "m" "拐点坐标" "c" "7" "" "")
  14.   (setvar "clayer" "拐点坐标")
  15.   (or k (setq k 1))
  16.   (setq k (Uint 1 "" "起始编号" k))
  17.   (while (and (setq p1 (getpoint "\n点击范围拐点<退出>: "))
  18.               (setq p2 (getpoint p1 "\n标注坐标点位置<退出>: "))
  19.          )
  20.     (command "text" p1 1 0 (itoa k))
  21.     (setq x  (rtos (nth 1 p1) 2 3)
  22.           y  (rtos (nth 0 p1) 2 3)
  23.           tx (strcat (itoa k) ":" "X:" x "," "Y:" y)
  24.     )
  25.     (command "text" p2 1 0 tx)
  26.     (setq k (1+ k))
  27.   )
  28.   (setvar "clayer" la)
  29.   (princ)
  30. )
 楼主| 发表于 2024-11-2 09:18:16 | 显示全部楼层

感谢您给改进代码,学习了!
 楼主| 发表于 2024-11-2 09:36:38 | 显示全部楼层

大哥,如果程序在执行中按ESC取消,也就是取消函数了,怎么也让他回到原图层呢?

点评

臭习惯得改  发表于 2024-11-2 11:30
 楼主| 发表于 2024-11-2 13:05:53 | 显示全部楼层
zyx1029 发表于 2024-11-2 09:36
大哥,如果程序在执行中按ESC取消,也就是取消函数了,怎么也让他回到原图层呢?

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-21 01:30 , Processed in 0.149868 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表