乐筑天下

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

[编程交流] bad function: "0"

[复制链接]
gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:06:42 | 显示全部楼层 |阅读模式
Hello CadTutor
 
My Program showing  bad function: "0"  please help me to find the error
Pls
Pls
 
  1. (defun err (msg)   (if    (not             (member msg '("Function cancelled" "quit / exit abort")                )        )        (progn                (princ (strcat "\nError Found * * < "   msg  " > * *"))                (princ "\nSystem Variables restored")        ))       (setvar 'clayer lay)    (setvar 'osmode osm)        (setvar 'cmdecho cmh)        (setvar 'nomutt mutt)    (princ))(defun c:Export_Text()   (setq cmh (getvar 'cmdecho)      osm(getvar 'osmode)          mutt(getvar 'nomutt)          lay(getvar 'clayer))(setvar 'osmode 0)(setvar 'cmdecho 0)(setq olderr *error* *error* err)(prompt "\nSelect Text Entites To Export Coordinates::")(setvar 'nomutt 1)(if (setq sset(ssget '((0 . "TEXT,MTEXT"))))    (progn            (setq file(open "C:\\Coords.csv" "w"))                (setq hdr(strcat "S.No" "," "Easting" "," "Northing" "," "String"))                (write-line hdr file)            (lay "Point_Number" 2)            (setq Num 1)            (setq i (sslength sset))                (repeat i                     (setq ssnm(ssname sset (setq i(1- i)))                               Point(TextJustp ssnm)                                   Omit(strcat (rtos num 2 0) "," (rtos (car point) 2 3) "," (rtos (cadr point) 2 3) "," (cdr (assoc 1 (entget ssnm))))                          )                          (write-line omit file)                          (_MakeText point (rtos num 2 0) 2 (getvar 'TEXTSTYLE) "Point_Number")                 (setq num(1+ num))                )                (close file)        )        (princ "\nNo Text /MText Selected:"))(setvar 'osmode osm)(setvar 'nomutt mutt)(setvar 'cmdecho cmh)(setvar 'clayer lay)(setq *error* olderr)(princ))                                                                                                                    (defun Lay(name col)   (if (not (Tblsearch "LAYER" name))    (command "_LAYER" "n" name "c" col name "")        (command "_LAYER" "t" name "ON" name "c" col name "")))(defun _MakeText(Inter String HT STYLE LAYER)   (entmake (list (cons 0 "TEXT")               (cons 10 Inter)                           (cons 1 String)                           (cons 40 Ht)                           (cons 7 STYLE)                           (cons 8 Layer)                 )))(defun TextJustp(data)   (setq ent(entget data))(if (= "MTEXT" (cdr (assoc 0 ent)))   (cdr (assoc 10 ent))   (progn       (if (and (= 0 (cdr (assoc 72 ent)))                    (= 0 (cdr (assoc 73 ent)))                        )                        (cdr (assoc 10 ent))                        (cdr (assoc 11 ent))                )        )))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:11:09 | 显示全部楼层
Follow this tutorial to debug your code:
 
http://lee-mac.com/debugvlide.html
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:16:00 | 显示全部楼层
Localize the variables and open the drawing and run the code .
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:18:10 | 显示全部楼层
Tharwat i Localized Variables but also getting same problem which i mentioned in  above post
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:25:23 | 显示全部楼层
Hint:
 
What is  lay
 
variable where the name of  current layer is saved?
or
a sub function that creates a layer?
 
HTH
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:27:52 | 显示全部楼层
 
Although your code did not throw any error at all , try it this way ...
 
  1. (defun c:Export_Text (/ *error* _MakeText TextJustp file hdr i num omit point sset ssnm) (defun *error* (x) (if file (close file))(princ "\n *Cancel*") (princ))(if (not (Tblsearch "LAYER" "Point_Number")) (command "_LAYER" "n" "Point_Number" "c" 2 "Point_Number" "") (command "_LAYER" "t" "Point_Number" "ON" "Point_Number" "c" 2 "Point_Number" "")) (defun _MakeText (Inter String HT STYLE)   (entmake (list (cons 0 "TEXT")                  (cons 10 Inter)                  (cons 1 String)                  (cons 40 Ht)                  (cons 7 STYLE)                  (cons 8 "Point_Number")            )   ) ) (defun TextJustp (data / ent)   (setq ent (entget data))   (if (= "MTEXT" (cdr (assoc 0 ent)))     (cdr (assoc 10 ent))     (progn (if (and (= 0 (cdr (assoc 72 ent))) (= 0 (cdr (assoc 73 ent))))              (cdr (assoc 10 ent))              (cdr (assoc 11 ent))            )     )   ) ) (prompt "\nSelect Text Entites To Export Coordinates::") (if (and (setq sset (ssget '((0 . "TEXT,MTEXT"))))          (setq file (open "C:\\Coords.csv" "w"))     )   (progn (setq hdr (strcat "S.No" "," "Easting" "," "Northing" "," "String"))          (write-line hdr file)          (setq Num 1)          (setq i (sslength sset))          (repeat i            (setq ssnm  (ssname sset (setq i (1- i)))                  Point (TextJustp ssnm)                  Omit  (strcat (rtos num 2 0)                                ","                                (rtos (car point) 2 3)                                ","                                (rtos (cadr point) 2 3)                                ","                                (cdr (assoc 1 (entget ssnm)))                        )            )            (write-line omit file)            (_MakeText point (rtos num 2 0) 2 (getvar 'TEXTSTYLE))            (setq num (1+ num))          )          (close file)   )   (princ "\nNo Text /MText Selected:") ) (princ))
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:31:11 | 显示全部楼层
Tharwat
 
Thank you for your Support Also revising my codes ..
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:36:41 | 显示全部楼层
@ Leemac I found the error  through Your Guide Lines from your site
 
Thank you
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-6 07:40:06 | 显示全部楼层
pBe i tried to create A A Layer Using Sub function
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:44:00 | 显示全部楼层
gS7,
 
I have given you the answer to your query on my post.
 
 
(setq lay (getvar 'clayer));;
 
(lay "Point_Number" 2);;
 
Why you may ask?...
 
("0" "Point_Number" 2);;;
 
A simple modification on your code will "fix" the problem...
 
its either this:
(setq layr (getvar 'clayer))....?
or
(defun LayerM` (name col)....
 
Your code defines lay as a layer maker when loaded.  When you run the routine  lay becomes the name of the current layer and not the layer maker sub you define when loaded. got it?
 
I pointed out the problem with your code so that way you will learn  to debug.
 
How else will you will learn if i've thrown in another code  for you to use. [or revising it for you]
 
Cheers
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:09 , Processed in 1.007465 second(s), 72 queries .

© 2020-2025 乐筑天下

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