乐筑天下

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

请教各位:

[复制链接]

38

主题

123

帖子

6

银币

后起之秀

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

铜币
275
发表于 2004-10-18 11:58:00 | 显示全部楼层 |阅读模式
各位:今天整了个程序。运行显示结果正确,但是最后显示--错误: 参数类型错误: lentityp nil,
请问是怎么回事,哪位麻烦解答一下。
回复

使用道具 举报

74

主题

1603

帖子

24

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1906
发表于 2004-10-18 12:52:00 | 显示全部楼层
上载程序看看!
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

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

铜币
275
发表于 2004-10-18 14:11:00 | 显示全部楼层
(defun C:ljth (/ OrigEnt                                 OrigEntData OrigText
                                                 NumText                 PrefixLen                 Prefix                 Num
                                                 NewEntData         NewPt                                                 Continue
                                         );文字累加替换
         (setq CopyIncOldErrorFunc *error*)
         (setq *error* CopyIncErrorFunc)
         (setvar "blipmode" 0)
         (setvar "cmdecho" 0)
         (setq os (getvar "osmode"))
         (setvar "osmode" 0)
         (while (= OrigEnt nil)
                         (setq OrigEnt (entsel "\n选择文本: "))
         )
         (setq OrigEntData (cdr (entget (car OrigEnt))))
         (if (/= (cdr (assoc 0 OrigEntData)) "TEXT")
                         (princ "所选对象不是text文本.")
                         (progn
                                         (setq OrigText (cdr (assoc 1 OrigEntData)))
                                         (setq NumText (GetSuffixDigits OrigText))
                                         (if (= NumText "")
        (princ "所选文字不是以数字结尾.")
        (progn
                 (setq PrefixLen (- (strlen OrigText) (strlen NumText)))
                 (if (= PrefixLen 0)
                                 (setq Prefix "")
                                 (setq Prefix (substr OrigText 1 PrefixLen))
                 )
                 (setq Num (atoi NumText))
                 (setq Continue T)
                 (while Continue
                                 (setq Num (1+ Num))
;;;                                 (initget 128)
                                 (setq ss2 (entsel "\n选取替换对象"))
                                 (setq ss2_data (entget (car ss2)))
                                 (setq ss2_typ (cdr (assoc 0 ss2_data)))
                                 (if        (= ss2_typ "TEXT")
                                                 (setq x2 (assoc 1 ss2_data))
                                                 (progn (alert "选取对象不是text文本,不能进行替换。")
                                                 (exit)
                                                 )
                                 )
                                 (setq xx2 (cons 1 (strcat Prefix (itoa Num))))
                                 (setq
                                                 ss2_data (subst xx2 x2 ss2_data)
                                 )
                                 (entmod ss2_data)
                 )                                ;end of while loop
        )
                                         )
                         )
         )
         (setq *error* CopyIncOldErrorFunc)
         (setvar "osmode" os)
         (prin1)
)
                                        ;----GetSuffixDigits---------------------------------------------------
                                        ;         This function accepts a string argument which has digits at the
                                        ;         end of it. It returns a string of just those digits. For example:
                                        ;                         (GetSuffixDigits "A102")         returns         "102"
                                        ;                         (GetSuffixDigits "102")                 returns         "102"
                                        ;                         (GetSuffixDigits "")                                         returns         ""
                                        ;                         (GetSuffixDigits "ABC")                 returns         ""
                                        ;                         (GetSuffixDigits 123)         will generate an error (bad argument type)
                                        ;----------------------------------------------------------------------
(defun GetSuffixDigits (OrigStr / Digits PrefixLen Char)
         (setq Digits "")
         (setq PrefixLen (strlen OrigStr))
         (while (> PrefixLen 0)
                         (setq Char (substr OrigStr PrefixLen 1)) ;get last char of string
                         (if        (wcmatch Char "#")                ;if it's a digit...
                                         (progn
        (setq Digits (strcat Char Digits)) ;include in result str
        (setq PrefixLen (1- PrefixLen))        ;ready to check next chr
                                         )
                                         (setq PrefixLen 0)                ;quit at first alpha
                         )
         )
         (setq Digits Digits)
)
                                        ;----Error Handling----------------------------------------------------
                                        ;         The routine below supplies our error handling in case the user
                                        ;         cancels the CopyInc function. The global holds the pointer to the
                                        ;         current error handler so it can be restored on exit.
                                        ;----------------------------------------------------------------------
(setq CopyIncOldErrorFunc nil)                ;global holds old func
(defun CopyIncErrorFunc        (msg)
         (if (= msg "函数取消.")
                         (princ " ")
                         (if        (= msg "中断退出")
                                         (princ " ")
                                         (princ (strcat "\n错误: " msg))
                         )
         )
         (setq *error* CopyIncOldErrorFunc)
         (prin1)
)
(princ "\n输入 'LJTH' 运行程序.")
(prin1)
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

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

铜币
275
发表于 2004-10-18 14:13:00 | 显示全部楼层
这是我摘了别人的程序又加了一些,删了 一些整成的一个程序。请高人帮忙瞅瞅。谢谢。
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

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

铜币
275
发表于 2004-10-18 14:15:00 | 显示全部楼层
这程序的作用是对件号进行累加,一开始使用复制功能,全部填写,然后选择第一个号码,再依次选择后面的,后面的将自动累加。
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-10-18 14:20:00 | 显示全部楼层
(setq ss2 (entsel "\n选取替换对象"))
When you hit ENTER, ss2 return nil, then
(setq ss2_data (entget (car ss2))) will fire the error message.
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

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

铜币
275
发表于 2004-10-18 14:28:00 | 显示全部楼层
请问版主,该怎么修改啊。我刚学这玩意。别人的程序还是半懂不懂。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-10-19 13:28:00 | 显示全部楼层
不用修改,使用时,这里你选择一个正确的对象就不会出错了
回复

使用道具 举报

36

主题

100

帖子

6

银币

后起之秀

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

铜币
244
发表于 2004-10-19 21:40:00 | 显示全部楼层
看你过滤文字很麻烦,用这(setq ss (ssget '((0 . "TEXT"))))试试!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-20 18:06 , Processed in 4.566853 second(s), 70 queries .

© 2020-2025 乐筑天下

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