乐筑天下

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

[编程交流] 递增nu时需要帮助

[复制链接]

14

主题

68

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 22:54:53 | 显示全部楼层 |阅读模式
你好
谁能告诉我如何增加两个用连字符分隔的数字?例如,C1-C5到C2-C6的增量值为1。非常感谢。
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 23:00:00 | 显示全部楼层
嗨,阿泰克!
 
 
当我需要这样的东西时,这条线并没有被忽视,无论如何我也没有。我兼职研究这个课题,下面是我对你要求的看法。由于我不知道您对Autolisp的了解程度,我将提供许多详细信息。
 
 
如果问题非常清楚完整,你总是有更好的机会得到答案。许多人不会费心问问题,如果他们提供的答案可能不适合你的需要,许多人也不会浪费宝贵的时间。格式总是一样的吗?x#-x#到x(#+1)-x(#+1)?信息在哪里?在文本上?多行文字?属性你想对答案做什么?将其放入现有块的属性中?在块插入的新实例上?进入创建的多行文字?对要处理的起始表达式的格式进行简单的更改会将问题的复杂性增加10倍,但不用担心,这正是我所需要的。
 
 
如果格式始终相同,x#-x#,则可以使用substr和常量数字(substr表达式1 1)检索字母,(substr表达式2 1)检索数字。由于数字是字符串格式,您需要将其转换为整数(atoi),递增,然后将其转换回字符串格式(itoa),将其与字母串联(strcat),如下所示
(strcat(substr表达式1 1)(itoa(+1(atoi(substr表达式2 1))))(substr表达式3 2)(itoa(+1(atoi(substr表达式5 1)ЮЮ)))
但是,如果开始表达式的格式发生更改,它将失败。
 
 
如果起始表达式不同,则必须考虑
绳子的长度不同(很明显,对吗?)(cda1-x9)
可能有1个或多个数字要递增(d97as)(F1G5-CS2)
要递增的数字可以是1个或多个数字。(c12-c17)
它可以以数字、数字或文本字符/字符串开始/结束。好吃!
 
 
剩下的唯一选择是逐字符检查。对于每个角色,您必须执行以下操作:
如果您不知道每次将检查多少个字符,以及一个数字中可能有多少位,则检查函数必须在需要时(且仅在需要时)回调。也许你认识到了这个模式,如果你不认识,那就是我们所说的递归函数。今天是你的幸运日,因为我几天前刚刚学习了一种递归(lambda嵌入lambda,niffffffty!),并想应用这个概念。也许其他方法会更容易(也许不会),也许我正在用火箭筒杀死一只苍蝇,但是嘿!用火箭筒杀死苍蝇真是太酷了!)
 
 
同时
每次你偶然发现一个数字序列的完成,你必须直接存储它,或者它在起始表达式中的位置/长度。我选择了后者,因为如果你知道字符串中的所有数字位置及其长度,你可以通过演绎找到并检索文本部分。。由于信息量未知,存储它的最佳方式是(鼓轮)列表!既然我们在列表处理中这么做,那该有多方便=)
 
下一步。
创建新表达式,检索后面的文本部分和数字(递增)。
 
 
我唯一没有考虑的事情是:
数字开头的零。(C05将返回C6)。想起来容易
文本格式
我不可能去那里
它也不适用于多重引线,维度,并且可以使多行文字中的维度看起来很奇怪。14/17“别让我觉得很自然。哦,别在你的狗身上试,以防万一=)
 
 
附言:我留下了许多提醒/原则,并对它们进行了评论。压制“;”在前面,试着跟随潮流。我留下了建筑清单。至于返回列表的工作方式,“c12-c217”将构建该列表;((2 . 1) (2 . 2) (6 . 3))
第一个点对是((找到的数的nb。需要常数)
下面的每个点对都是(数字第一位的位置。数字的长度)
 
 
  1. 2
似乎效果不错,我已经用这些例子进行了测试和调试,可以在包含555、5、c、c42-、c99-8、d17bd、c17bd43之类内容的文本/多行文字上试用。c2-c5、99B99999、a4v6s9f6s0v99。。。请保留标题=)
 
 
特别感谢cwake。克林特?克林特?克莱特=D
 
 
祝你周末愉快!
杰夫!
回复

使用道具 举报

18

主题

99

帖子

91

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-5 23:05:36 | 显示全部楼层
哇,很棒的东西,但例行程序还没有完成,还是?
它只显示递增的数字,不允许我将文本放置在某处。。。我还有一个挑战给你。。。如果我只想将文本的一部分从a1-b1-c1增加到a2-b1-c2,或者用不同的值增加不同的部分,如a1-b1-c1到a2-b1-c5。。。我想这可以通过输入命令修饰符的起始位置1来实现。数字到增量的增量值,起始位置为2。数字到增量的增量值…'在我的例子中
'增量,2-1,8-4'
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:07:40 | 显示全部楼层
这里有一个替代程序:增加文本中的数字
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 23:13:28 | 显示全部楼层
谢谢不,它还没有完成。对于初学者来说,第二部分按预期工作,但我根本没有优化其可读性。在你最初的帖子中,你想知道如何增加由连字符分隔的两个数字,这实际上比我做的要多。至于“让你把文字放在某处……”我确实问过你(和其他人一样),你想对这个答案做什么?将其放入现有块的属性中?在块插入的新实例上?进入创建的多行文字?你不会花几秒钟来回答我的问题,但你想让我花更多的时间来塑造我的Lisp程序,以满足你的需要,甚至没有明确说明它们?好吧,好吧。。
 
忽略一些数字,修改其他数字的增量?有了lisp,一切都是可能的,但不同的目标往往意味着不同的道路。更不用说,我真的看不出启动一个命令的好处,该命令将从表达式中提取所有数字,并询问我想对每个数字应用什么增量。在这一点上,你为什么不自己简单地更改数字呢? 
如果你想学习lisp,这个地方是我见过的最好的地方之一。除了给你我工作的一部分,我花了相当长的时间写下我以前的帖子来帮助你学习,但我觉得学习可能不是这里的目标。我错了吗?
 
请随时发布您正在进行的工作,我们很乐意帮助您。如果你不介意的话,我现在得走了,现在是星期六
干杯
杰夫!
回复

使用道具 举报

18

主题

99

帖子

91

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-5 23:16:59 | 显示全部楼层
我没有要求这个Lisp程序,这是阿泰克,所以我不知道他想要什么答案。。。我只是在论坛上看到了这篇文章,对如何改进它几乎没有什么想法。。。至于学习,我学到了一些东西,但问题是在我的脑海里把它们联系起来
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 23:19:27 | 显示全部楼层
阿泰克/蒂米斯拉夫,抱歉搞砸了!
 
如果有趣的话,可以用火箭筒杀死苍蝇,但在做复杂的动作时,最好尽量保持简单。我的下一个里程碑将是尝试用不同的路径来实现我的目标,然后在这些路径上使用基准例程来查看哪一个是最快的。有时候这样我们会得到惊喜。
 
关于改进它,或者我应该说使用它,根据需要,您可以不在最后制作(警报)而将值馈送到(entmake)以创建文本、多行文字,或者使用mod修改任何现有文本、多行文字或块属性的assoc 1。我的目标是创建增量过程,但我还没有决定是在块插入还是在表中使用它。我很可能会用它来填充新块插入的属性。
 
作为一名绘图员,我有超过10年的工具想法要放在lisp中,正如你所说,问题是在我的脑海中把它们联系起来
回复

使用道具 举报

18

主题

99

帖子

91

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
84
发表于 2022-7-5 23:23:37 | 显示全部楼层
当我们谈论速度时,我认为李已经用他在这里提到的“短”Lisp程序覆盖了这一点,但学习过程是宝贵的。。。说到点子,你说得对
回复

使用道具 举报

14

主题

68

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 23:25:16 | 显示全部楼层
嗨,杰夫!
 
 
对不起,我没有看到你的回复。这个网站曾经在我的问题有任何回复时通过电子邮件通知我,但不幸的是,这一次没有发生。老实说,我真的以为没有人注意到我的帖子。无论如何,非常感谢你的努力。非常感谢。我可能需要一些时间来消化你的代码,因为它对我的编程水平来说太复杂了。
回复

使用道具 举报

14

主题

68

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-5 23:29:56 | 显示全部楼层
嗨,杰夫!
 
 
你是教练吗?如果你不是,那么你应该考虑一下,因为你有能力向人们清楚地解释事情。
 
 
我试着运行你的代码,效果很好。如果我没有提及我的问题中的许多重要细节,我深表歉意。我最初的目标只是想知道如何做,或者可能是一个示例代码,然后将其作为现有代码的子代码。直到现在,我才意识到事情不会那么简单。
 
 
我真正需要的是增加一些选定的文本,并用新增加的文本覆盖/替换选定的文本。李·麦克的Text_Inc非常接近我真正想要的。非常感谢,李。如果只有一种方法可以将选择限制在指定的一组数字内,例如,从C45开始,以C98结束,而不是逐个选择所有数字(如果不是每个数字)。如果给定的增量值为1,则代码将增加并替换从C45到C98的文本值,包括中间的数字,这些数字用连字符连接,如C50-C57。代码也应该适用于普通数字,以便更加灵活。如果这是可能包括在您的计划,那么这将是一个双重美味!再次感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:14 , Processed in 0.439859 second(s), 72 queries .

© 2020-2025 乐筑天下

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