[llsheng_73]■■■ 09:57:43
这个要找出为什么很困难,因为我根本就发现不了异常。。。
[NJZX05]剑无锋 09:59:31
修改一下后面的输出部分,可以对照查看结果
(print)
(princ "最大码对应的换码结果为:") (print MaxIndex)
(princ "最大码为:") (print (Num->Str MaxIndex BaseChLst))
(princ "测试码对应的换码结果为:") (print Index)
(princ "测试码为:") (print (Num->Str Index BaseChLst))
这是修改后的文件
[pzweng][pzweng]路人 10:00:10
这个程序没错
运行正常
[NJZX05]剑无锋 10:00:27
就是结果不正确
[pzweng][pzweng]路人 10:00:36
正确的
[NJZX05]剑无锋 10:01:43
[qqimg]201311/{A5ED4CFC-8C80-C8F5-776B-6C3EC65BAC2B}.jpg[/qqimg]
这是一次运行的结果
[pzweng][pzweng]路人 10:02:06
哪里错了
[NJZX05]剑无锋 10:03:22
最大码错了,最大码的字符串长度应该是最大码长
[pzweng][pzweng]路人 10:04:02
你搞了半天大家都不知道你的目的
你就知道在问
[NJZX05]剑无锋 10:04:30
经检查发现,在刚进行换码计算后,得到的结果是正确的,可当再执行一些其他并不涉及那个变量的结果后,再检查就不正确了
[pzweng][pzweng]路人 10:04:30
我们又不知道正确应该是多少,你又不说
[llsheng_73]■■■ 10:05:37
我以为只有我不知道
[NJZX05]剑无锋 10:05:41
(repeat MaxLen (setq MaxIndex (strcat MaxIndex Char)))
(print)
(princ "最大码初值为:") (print MaxIndex)
[lisp-study]jun 10:05:51
路人发飙了
[NJZX05]剑无锋 10:05:56
在这里增加个输入,就明白是什么回事了‘
[pzweng][pzweng]路人 10:06:12
你要告诉我们,比如说:1+1 值应该是2 而程序却是3
你问的莫名其妙
[NJZX05]剑无锋 10:06:40
这是一次运行的结果:
[qqimg]201311/{9FBFD0DA-7D3B-7095-B59F-3E1AA9991635}.jpg[/qqimg]
[pzweng][pzweng]路人 10:06:41
输入个毛线哦
你别发了
浪费大家时间
[NJZX05]剑无锋 10:08:10
你不参与可以当没看见,其实问题的原因我已经找到了,至所以还在发,只是想给大家提个醒
会存在这样的错误而已
[pzweng][pzweng]路人 10:08:41
我们又不知道错在哪里
你能告诉我们输入什么,应得到什么结果吗
[NJZX05]剑无锋 10:09:09
结束这个问题的讨论,有发现问题的私聊
[llsheng_73]■■■ 10:10:22
我只感觉那个不断的* +会导致结果意外,但由于不清楚程序的目的,所以没理它
[NJZX05]剑无锋 10:11:13
说白了,这就是想实现二战时的换码法的密文变换
[pzweng][pzweng]路人 10:11:40
这种技术性的东西你在这里讨论让我们占便宜了
[NJZX05]剑无锋 10:15:12
路人版主,我知道水平低,可也不必要这样讽刺吧
[NJZX05]剑无锋 10:16:14
作为初学者我遇到些不明原因的问题我想也正常吧,相信你也有过初学都的经历吧
[hawnn]hawnn 10:17:32
只是你这问题
并无实际意义的吧
老实讲,通用性太小
[pzweng][pzweng]路人 10:17:35
别人问什么我答什么
[pzweng][pzweng]路人 10:18:06
我问你结果应该是什么,你一直不说
你只是不停说错了
[NJZX05]剑无锋 10:19:05
我就是玩的,结果发现了异常
[pzweng][pzweng]路人 10:19:43
你竟然是求助
那么你也得告诉正确是多少,让大家知道是不是异常
我们没发现异常,就你一个人发现异常了
[NJZX05]剑无锋 10:20:09
程序的过程是这样的:
用最大码自动生成一个字符串,用手工输入一个字符串,都在码集下进行变换,测试结果是否正确
[vormittag]桔子 10:20:35
反正就是不对,哪里不对自己看。
[pzweng][pzweng]路人 10:20:45
你那应该给我们一个测试数据呀
[NJZX05]剑无锋 10:21:05
在用最大码长自动生成一个字符串时,是按码集中序号最大的字符,按最大码长数量生成的
[pzweng][pzweng]路人 10:21:09
比如:我输入1+1
得到结果应是:2
程序却是:3
[阿然][阿然] 10:21:12
别争了,刷屏看的都累
[NJZX05]剑无锋 10:21:23
比如:
[qqimg]201311/{51561BB1-9B76-D047-258B-623768460572}.jpg[/qqimg]
我输入的码集是:0123456789
也就是十进制数
输入的最大码长是3,生成的最大码应该是999
[pzweng][pzweng]路人 10:22:22
干嘛不早这样说
[NJZX05]剑无锋 10:22:33
换码成数字时也应该是999
但是在换码时就出现错误了
[llsheng_73]■■■ 10:23:02
现在比较清楚你的目的了
[NJZX05]剑无锋 10:23:07
变成了"3"
[pzweng][pzweng]路人 10:23:35
早这样说不就得了
[阿然][阿然] 10:24:16
lisp本来就不适合做这些东西,还是回到cad自身来吧,都研究加密解密的,想做商业软件还是别考虑了
[llsheng_73]■■■ 10:24:43
但那个应该跟最先的基础码相关吧,不然输入01234,最大码长8它就输出88888888, 这不是与基础码集无关了么?
[阿然][阿然] 10:25:01
应该是44444444
[xiaomm250][lisp_](car (entsel)) 10:25:02
天正的混凝土墙难道不能用entmod与subst更新墙的左宽与右宽度吗?
[llsheng_73]■■■ 10:25:08
最大码长8它就输出44444444
[xiaomm250][lisp_](car (entsel)) 10:25:18
我已更新就cad崩溃,不知道为什么
天正的混凝土墙难道不能用entmod与subst更新墙的左宽与右宽度吗?我一更新就cad崩溃,不知道为什么
[llsheng_73]■■■ 10:26:34
对天正我始终没搞懂它到底是以CAD为平台还是取了一个CAD的名字采用了和CAD类似的数据结构组织,总之看到就什么办法都没了。。。。
[llsheng_73]■■■ 10:27:22
因为我从来没用过它也很少碰到别人用它做的图
[阿然][阿然] 10:27:32
天正的是自定义实体,没有开放dxf组码查询修改,所以你一更新就崩溃了
[xiaomm250][lisp_](car (entsel)) 10:28:08
但是我确实需要更新建筑的墙的厚度,怎么办呢?
[llsheng_73]■■■ 10:28:12
也就是说它并不是真正按CAD的数据结构来组织的?
[NJZX05]剑无锋 10:28:37
天正是以CAD为数据管理平台,并使用了CAD中已有的对象类型,只不过天正的对象,除了CAD本身已有的对象外,还有托管对象(也就是CAD所没有的对象)
[xiaomm250][lisp_](car (entsel)) 10:28:54
但是我确实需要更新建筑的墙的厚度,怎么办呢?
[NJZX05]剑无锋 10:28:55
[qqimg]201311/{0AD6C861-20C7-5050-6B97-E5DBB1939A41}.jpg[/qqimg]
这是单独测试这两个函数的结果
[阿然][阿然] 10:29:24
只能依靠天正自己的命令来修改
[NJZX05]剑无锋 10:29:54
那你就需要用天正的对象,并且用天正的对象所提供的接口方法来修改
[NJZX05]剑无锋 10:30:40
你可以用(vlax-dump-object (vlax-ename->vla-object (car (entsel))) T)
来查看他到底提供了什么
然后再用决定用什么方法来处理它
[xiaomm250][lisp_](car (entsel)) 10:33:13
[@93948511,@[NJZX05]剑无锋] update?
[pzweng][pzweng]路人 10:33:27
用vlisp
不要用lisp来更新
试试看看呗
[夏生生][x_s_s_1]生无可恋 10:33:46
看天正的使用手册,提供了接口的,正版都有
[xiaomm250][lisp_](car (entsel)) 10:34:24
[qqimg]201311/{289F2DF9-989B-8575-83F8-9CD981671732}.jpg[/qqimg]
[NJZX05]剑无锋 10:34:42
update没有用的,必须用天正提供的接口,才能更新天正的对象
[NJZX05]剑无锋 10:35:22
不过如果知道他的组码,也可以在LISP里更新
[xiaomm250][lisp_](car (entsel)) 10:35:52
[@93948511,@[NJZX05]剑无锋] 我就是用subst与entmod更新组码的,结果cad崩溃了
[NJZX05]剑无锋 10:36:15
应该不至于吧
你把代码发上来看看
[pzweng][pzweng]路人 10:36:36
用vla-put试试呢
[NJZX05]剑无锋 10:37:19
不过我想即然天正提供的组码,应该会允许使用的吧
[NJZX05]剑无锋 10:38:10
我试了一下,倒是(vlax-ename->vla-object (car (entsel)))时出问题了,不让我转成vla对象,呵呵
[qqimg]201311/{6381A055-5D2F-893E-B66E-C39891CFD3AF}.jpg[/qqimg]
选的是天正的一段墙体
[xiaomm250][lisp_](car (entsel)) 10:38:53
(vl-load-com)
[NJZX05]剑无锋 10:39:52
已经加载了
[NJZX05]剑无锋 10:40:27
图形如下:[qqimg]201311/{DB54EAF5-251C-A3DF-33ED-2B0E2A06BECD}.jpg[/qqimg]
[xiaomm250][lisp_](car (entsel)) 10:40:29
(vlax-dump-object (vlax-ename->vla-object (car (entsel))) T)
[pzweng][pzweng]路人 10:41:29
用天正真是悲剧
[NJZX05]剑无锋 10:42:01
其实也不能怪人家,毕竟人家也要吃饭
理解就好
[夏生生][x_s_s_1]生无可恋 10:42:12
那破东西能不用就不用
纯cad画也蛮快的
[llsheng_73]■■■ 10:44:59
关键它弄个CAD的帽子又跟CAD不一样,真不知道用它做出的图怎么用,难道就是打印成纸质的来看?
如果把它交给设计第三方,人家有办法用它么?
[NJZX05]剑无锋 10:45:34
[qqimg]201311/{A3A1AE71-C756-4B03-3B8E-1172C12428E0}.jpg[/qqimg]
的确有这个问题
一使用entmod就来了
我也没办法啊
[NJZX05]剑无锋 10:46:56
直接崩了我
看来我不用天正还是正确的
没有的东西,就写个外挂
[xiaomm250][lisp_](car (entsel)) 10:55:49
vla-get-leftwidth,为什么这个函数不能用呢?
天正的墙是有leftwidth这个属性的
[NJZX05]剑无锋 10:56:39
因为你没加载天正的函数库
这就是找到的原因
[xiaomm250][lisp_](car (entsel)) 10:56:55
怎么加载了?
[NJZX05]剑无锋 10:57:35
vla-get-leftwidth是vla对象不错,可是这个vla对象,却不是采用(vl-load-com)加载的
[NJZX05]剑无锋 10:58:59
刚才的致命错误,也可以这样来解决
[xiaomm250][lisp_](car (entsel)) 10:59:44
[@93948511,@[NJZX05]剑无锋] 怎么解决?
[NJZX05]剑无锋 10:59:45
你需要测试加载天正提供的几个程序文件,看看在哪一个中
我正在测试
[NJZX05]剑无锋 11:00:31
不过很讨厌,每测试错误一次,我的CAD就崩一次
你最好能有天正提供的说明
[xiaomm250][lisp_](car (entsel)) 11:01:12
[@93948511,@[NJZX05]剑无锋] 我也觉得很讨厌,老是崩溃
[NJZX05]剑无锋 11:04:49
[qqimg]201311/{822DA56B-4068-5175-65C7-E958F7BA10A3}.jpg[/qqimg]
就是加载了这个vl.arx
[xiaomm250][lisp_](car (entsel)) 11:05:17
加载了那个就不崩溃了? |