[kewyst]………… 18:26:41
由cass三角网文件 怎么得到顶点数据
[zark]虚心请教 18:28:46
先转为VLA对象 (vlax-ename->vla-object en) 然后用GET函数找。你试试。我以前用ENTGET好像也很不好找
[VBALISPER]恐龙 18:36:20
数字的位数不确定,怎么用rtos呢?
[VBALISPER]恐龙 18:37:34
请问rtos这个能不能把数字直接转成字符,不指定小数位数,却和数字的小数位一致呢.如数字是a = 1.2 (rtos a),最后写出文字,成了1.2000了
是这样的.但小数位数不确定.
[vormittag]桔子 18:38:01
小数位数不写就行了
[VBALISPER]恐龙 18:38:09
不能用(rtos a 2 2)最后一个2,不确定是几位数
[vormittag]桔子 18:38:11
(rtos a 2)
[VBALISPER]恐龙 18:38:30
我试了一下,还是成了1.2000了
是不是要设置一下D什么的变量?
[啵浪鼓] 18:38:40
dimzin 8
[zark]虚心请教 18:38:44
不是他要的。
[qqimg]201308/{F2A42A35-7403-FE0E-29F6-4DBF88CC5F46}.jpg[/qqimg]
[zark]虚心请教 18:39:45
改成8也不行哦
[VBALISPER]恐龙 18:40:01
(setq str (rtos str 2)) str=1.2 最后写成文本,就写出来1.2000
[zark]虚心请教 18:40:23
以前也想这样,就是没成功
[vormittag]桔子 18:40:53
应该是可以的
[VBALISPER]恐龙 18:41:06
我的dimzin就是8
[VBALISPER]恐龙 18:42:07
在写文本之前,用了princ显示,仍然是1.2000
(setq str (read st));str结果是数字
;(setq len_fenzi(strlen str));分子的长度
(setq str (rtos str 2))
(princ "
")
(princ str)
[啵浪鼓] 18:42:27
命令: dimzin
输入 DIMZIN 的新值 : 8
命令: (rtos str 2)
"1.2"
[VBALISPER]恐龙 18:42:38
st=1.2 2.3 2.0
[啵浪鼓] 18:42:58
dimzin去尾数为0的
[VBALISPER]恐龙 18:43:17
哦.我看我的值就是8,就没有改
[gongsiyi123][gongsiyi123]龙龙 18:44:08
请教一下
( (a1 b1)(a2 b2)……(an bn) )
这样一个表,怎么处理后变成这样:
( a1 a2 a3……an )
?
[VBALISPER]恐龙 18:44:51
对了,我单位里就是设置的4位小数
[啵浪鼓] 18:45:50
[gongsiyi123][gongsiyi123]龙龙 18:46:11
非常感谢!
[VBALISPER]恐龙 18:46:14
我是不是rtos没有成功哦.princ出来的值没有引号
[gongsiyi123][gongsiyi123]龙龙 18:46:24
还是函数不熟悉啊,刚才用foreach弄了半天都不行
[VBALISPER]恐龙 18:46:26
命令: ee
指定文字标注的位置
1.2000
[啵浪鼓] 18:46:26
应该是要(A1 B1 A2 B2)吧?
[gongsiyi123][gongsiyi123]龙龙 18:46:42
是要(a1 a2...an)
[啵浪鼓] 18:46:58
成功了,princ是不带引吧的,你要引号就用print
[啵浪鼓] 18:48:26
[VBALISPER]恐龙 18:49:13
哦.是的了.但一直显示1.2000,怎么办呢?dimzin是8
[雨的节奏][雨的节奏] 18:49:19
删除重复元素
oldlist
(setq newlist ())
[啵浪鼓] 18:50:29
不单是重复,还有统计,还有保留图元,想了一天没想弄这几句简短的代码要咋弄啊
[VBALISPER]恐龙 18:51:23
(rtos a 2) (rtos a)都试了,不行.
[啵浪鼓] 18:55:10
为啥我的行啊,把你的完整代码发上来,我帮你测下
[VBALISPER]恐龙 18:57:06
我是先把 1.2 2.3 2.0这样一段字符read出第一个1.2,然后来rtos的,可能就是read了一下,就老出问题.
;堆叠文字
(defun c:ee(/ os xt1 ptbz st str str1 str2 ptbzx ptbzy pt1y pt2y pt1 pt2 pt3 pt4)
(setq olderr *error* *error* myerr)
(setq ptbz (getpoint "
指定文字标注的位置"))
(setq st (LM:EditBox ""));调用对话框
(SETVAR "CMDECHO" 0)
(setq os (getvar "osmode"));保存捕捉状态
(setq xt1 (getvar "DIMZIN"));保存DIMAZIN系统变量的值
(setvar "DIMZIN" 0)
(setvar "OSMODE" 0);关闭对象捕捉,否则出错
(if
(= (tblobjname "LAYER" "品位厚度") nil);没有该图层
(command "layer" "n" "品位厚度" "c" "7" "" "");建立图层
)
(command "layer" "s" "品位厚度" "");置为当前层
(setq str (read st));str结果是数字
(setq strT (read (strcat "(" st ")")))
(setq str1 (rtos (car str) 2 2))
;(setq len_fenzi(strlen str));分子的长度
(setq str (rtos str 2))
(princ "
")
(princ str)
;(princ len_fenzi)
;;; (setq str1 (rtos (car str) 2 2))
;;; (setq str2 (cdr str))
(princ "
")
;(setq str2 (substr st len_fenzi))
(princ st)
;(alert (strcat str1 "和" str2));查看是否分离出2个数字
(setq ptbzx (car ptbz))
(setq ptbzy (cadr ptbz))
(setq pt1y (+ ptbzy 2))
(setq pt2y (- ptbzy 2))
(setq pt1 (list ptbzx pt1y))
(setq pt2 (list ptbzx pt2y))
(setq pt3 (list (- ptbzx 5) ptbzy))
(setq pt4 (list (+ 5 ptbzx) ptbzy))
(command "pline" pt3 pt4 "")
(command "text" "j" "m" pt1 "2.5" "" str);j为对齐样式,m为中间(可改为c中心)
(command "text" "j" "m" pt2 "2.5" "" st);j为对齐样式,m为中间
(setvar "osmode" os)
(setvar "DIMZIN" xt1)
(SETVAR "CMDECHO" 1)
(myerr)
;(prompt "
堆叠标注工具由恐龙编写,制作日期:2011.11.03,命令名:ddt")
(prin1)
)
(defun LM:EditBox ( string / id );堆叠文字用编辑框
(and
(< 0 (setq id (load_dialog "ACAD")))
(new_dialog "acad_txtedit" id)
(set_tile "text_edit" string)
(action_tile "text_edit" "(setq string $value)")
(if (zerop (start_dialog)) (setq string nil))
)
(if (< 0 id) (unload_dialog id))
string
)
(defun myerr (msg)
(setvar "osmode" os)
(setq *error* olderr)
(princ)
)
[啵浪鼓] 19:00:53
对话框里输了数字无法退出咯
[VBALISPER]恐龙 19:01:12
确定就退出了.
[啵浪鼓] 19:02:19
命令: ee
指定文字标注的位置; 错误: 参数类型错误: consp 5
命令:
命令: !str 5
[VBALISPER]恐龙 19:02:39
(setq strT (read (strcat "(" st ")")))
(setq str1 (rtos (car str) 2 2))多了.我正在修改
[VBALISPER]恐龙 19:03:29
我正在各种试验.刚才发到群里的有几句没改回来.
[啵浪鼓] 19:03:34
你的程序目前是出错退出的,然后你又写了出错处理,所以你最后得到的结果值应该是dimzin回到初始前了
[VBALISPER]恐龙 19:04:03
发给你的.能写出字来.
正常退出的吧
[啵浪鼓] 19:04:41
写不出错
[VBALISPER]恐龙 19:04:46
[qqimg]201308/{FE532CF9-51A8-832B-65C7-5EDC9FE101A0}.jpg[/qqimg]
[啵浪鼓] 19:04:49
写不了字
[VBALISPER]恐龙 19:05:02
;堆叠文字
(defun c:ee(/ os xt1 ptbz st str str1 str2 ptbzx ptbzy pt1y pt2y pt1 pt2 pt3 pt4)
(setq olderr *error* *error* myerr)
(setq ptbz (getpoint "
指定文字标注的位置"))
(setq st (LM:EditBox ""));调用对话框
(SETVAR "CMDECHO" 0)
(setq os (getvar "osmode"));保存捕捉状态
(setq xt1 (getvar "DIMZIN"));保存DIMAZIN系统变量的值
(setvar "DIMZIN" 0)
(setvar "OSMODE" 0);关闭对象捕捉,否则出错
(if
(= (tblobjname "LAYER" "品位厚度") nil);没有该图层
(command "layer" "n" "品位厚度" "c" "7" "" "");建立图层
)
(command "layer" "s" "品位厚度" "");置为当前层
(setq str (read st));str结果是数字
;(setq len_fenzi(strlen str));分子的长度
(setq str (rtos str 2))
(princ "
")
(princ str)
;(princ len_fenzi)
;;; (setq str1 (rtos (car str) 2 2))
;;; (setq str2 (cdr str))
(princ "
")
;(setq str2 (substr st len_fenzi))
(princ st)
;(alert (strcat str1 "和" str2));查看是否分离出2个数字
(setq ptbzx (car ptbz))
(setq ptbzy (cadr ptbz))
(setq pt1y (+ ptbzy 2))
(setq pt2y (- ptbzy 2))
(setq pt1 (list ptbzx pt1y))
(setq pt2 (list ptbzx pt2y))
(setq pt3 (list (- ptbzx 5) ptbzy))
(setq pt4 (list (+ 5 ptbzx) ptbzy))
(command "pline" pt3 pt4 "")
(command "text" "j" "m" pt1 "2.5" "" str);j为对齐样式,m为中间(可改为c中心)
(command "text" "j" "m" pt2 "2.5" "" st);j为对齐样式,m为中间
(setvar "osmode" os)
(setvar "DIMZIN" xt1)
(SETVAR "CMDECHO" 1)
(myerr)
;(prompt "
堆叠标注工具由恐龙编写,制作日期:2011.11.03,命令名:ddt")
(prin1)
)
(defun LM:EditBox ( string / id );堆叠文字用编辑框
(and
(< 0 (setq id (load_dialog "ACAD")))
(new_dialog "acad_txtedit" id)
(set_tile "text_edit" string)
(action_tile "text_edit" "(setq string $value)")
(if (zerop (start_dialog)) (setq string nil))
)
(if (< 0 id) (unload_dialog id))
string
)
(defun myerr (msg)
(setvar "osmode" os)
(setq *error* olderr)
(princ)
)
这个,和单独发给你的一样,刚写出字来了的.
命令: ee
指定文字标注的位置
1.2000
1.2 2.2 3.0
[VBALISPER]恐龙 19:06:16
目前主要任务是从1.2 2.2 3.0这个字符串里,读出1.2来.
[啵浪鼓] 19:06:18
[qqimg]201308/{B7E7B1A9-C638-6000-71C6-CA49E21CE2BE}.jpg[/qqimg]你这里为什么是0?
[zark]虚心请教 19:06:21
用什么函数能返回一个符号的字符串格式。比如(XX setq)返回“setq”
[VBALISPER]恐龙 19:06:41
哦.明白了.
[VBALISPER]恐龙 19:07:43
又出现新的问题了.
[qqimg]201308/{F8169C74-62B9-ADB4-4603-9EABF5B05FEA}.jpg[/qqimg]对了.
但是如果我输入的字符串是1.0 2.3 3.0这样的,分子就变成1了.
我希望分子是我输入字符串的第一个数.
就是把那个改为8了
[啵浪鼓] 19:09:08
函数可以转字符串?没弄过
[VBALISPER]恐龙 19:09:41
没注意到程序里把它改为0了.现在改成8,对1.2这种情况对了.对1.0这样的情况又不对了.
[zark]虚心请教 19:09:53
应该可以的。(xxx setq)返回"setq"
不懂这个XXX是什么函数
[啵浪鼓] 19:10:23
1.0返回1
[VBALISPER]恐龙 19:10:51
就是啊.现在rtos 1.0 就得到1了.不是我要的1.0
总之,写1.2就返回1.2,1.0就返回1.0
[VBALISPER]恐龙 19:12:52
虚心请教,你的意思是目前没有这样的函数,是吧
[啵浪鼓] 19:13:13
你从对话框里读出来的就是文字格式,为什么要转换数字呢?转数字后计算是可以,但是你输出文字的时候就用没转换前的赋值啊
[gongsiyi123][gongsiyi123]龙龙 19:13:29
[qqimg]201308/{CB14CF65-BE4E-80F6-6782-A86726BC3DB3}.jpg[/qqimg]
再问个问题~~
我希望选中左边的单选按钮时,让右边的列表禁用,选中右边的单选按钮时,让左边的列表禁用,该怎么实现呢?
(action_tile "button1" "(mode_tile "list2" 1)")
(action_tile "button2" "(mode_tile "list1" 1)")
运行提示错误:参数太多
[zark]虚心请教 19:13:32
我找一下。因为我现在需要要符号或函数转化成字符
[VBALISPER]恐龙 19:13:51
我也不想转成数字啊.1.0 2.3 3.0这样的字符串,怎么取得第一个数呢?
我用的是read取得的.就自动变成数字了.
[zark]虚心请教 19:15:01
[qqimg]201308/{952D08A4-ECFA-BF64-E1B6-88CBDB749FE1}.jpg[/qqimg]
[啵浪鼓] 19:16:07
你从对话框里提取出来是怎样的组合,发出来看
[xzz007][xzz007]lisp编程 19:16:13
vl-princ-to-string
[VBALISPER]恐龙 19:17:48
终于对了.就是这个.谢谢各位
[VBALISPER]恐龙 19:18:25
这个比rtos好用点啊.输入什么,出来什么.
[zark]虚心请教 19:18:44
(defun Gstr (F /)
(vl-princ-to-string (quote F))
)
(Gstr setq)/="setq"
这个返回"F",不懂怎么改进一下能返回setq
[VBALISPER]恐龙 19:19:06
还是不对.
[VBALISPER]恐龙 19:19:59
命令: EE
指定文字标注的位置 输入的是1.20 2.30 3.02,写出来又成了1.2了.
1.2
1.20 2.30 3.02
[VBALISPER]恐龙 19:20:51
1.0的就对 1.20 这样又不对.
[啵浪鼓] 19:22:33
搞不懂怎么提取的,如果不行,用字长控制rots的小数位的取舍
用strlen计算数字长度
用strlen计算文本长度
[VBALISPER]恐龙 19:23:28
换个问法吧.怎么取得字符串 "1.0 2.3 2.9" 这样的第一个数
难道是求第一个空格的位置,然后来求得?
[啵浪鼓] 19:24:28
是的
[VBALISPER]恐龙 19:24:37
不确定第一位数是几位小数.有可能是1.0,也可能是1.20
[xzz007][xzz007]lisp编程 19:25:34
用这个函数vl-princ-to-string
[VBALISPER]恐龙 19:25:44
用了.
[zark]虚心请教 19:25:56
[qqimg]201308/{02B5CD8A-20A1-BC45-5490-2B165FC64413}.jpg[/qqimg]
[VBALISPER]恐龙 19:26:13
1.0的就对,返回1.0字符 1.20 这样又不对.返回1.2字符
[VBALISPER]恐龙 19:27:39
vl-string-search搜索空格位置,如果有多个,返回第几个空格的位置呢?
[啵浪鼓] 19:27:51
(substr "1.0 2.3 2.9" 1 (vl-string-search " " "1.0 2.3 2.9"))
用空格查找,分三次
[VBALISPER]恐龙 19:28:27
为什么要分三次呢?
[VBALISPER]恐龙 19:28:58
vl-string-search搜索"空格"位置,如果有多个"空格",返回第几个空格的位置呢?
[VBALISPER]恐龙 19:30:25
好象是返回第1次出现的位置哈
那就正合题意了.
[csc123456]顽强 19:31:28
搞定了吗
[VBALISPER]恐龙 19:35:33
正在搞,应该能搞定了.
命令: (vl-string-search " " "1.0 2.3 2.9") 3
就是先搜索空格,然后取子串.不去转成数字
[csc123456]顽强 19:38:15
根据返回的数值取字符
[lisp-study]jun 19:39:34
字符串转表
[啵浪鼓] 19:39:42
命令: (lst-str "1.0 2.000 3.23 4.05")
("1.0" "2.000" "3.23" "4.05")
[pzweng][pzweng]路人 19:40:06
这么复杂?
[lisp-study]jun 19:40:55
仅仅是数字的话可以不这么复杂
[啵浪鼓] 19:41:33
方法很多,看怎么取舍
[啵浪鼓] 19:42:10
[lisp-study]jun 19:43:14
[qqimg]201308/{6BFB631F-E847-969E-47C5-B1551BF4A921}.jpg[/qqimg]
就是你的那个分类?
[啵浪鼓] 19:45:32
不是,这个是恐龙的,上面那个贴子里的还没有解决,找不到方法
[csc123456]顽强 19:45:36
[qqimg]201308/{C92F9649-4758-D7B8-4ED0-4EFBF39F73E7}.jpg[/qqimg] |