乐筑天下

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

[编程交流] 分层

[复制链接]

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:25:43 | 显示全部楼层
我正在尝试制作一个gif,就像我在这里看到的一样,来展示我打算做什么。
回复

使用道具 举报

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:30:37 | 显示全部楼层
这是我的gif(太大了??)
095257pvjmhg5zhj5hxh2n.jpg
 
我在这里还放置了gif中出现的示例的初始文件和最终文件。
 
这个文件不是最好的解释我的问题,因为它是非常“线性”,但我认为你可以尝试解释我做什么。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:33:41 | 显示全部楼层
说真的,我现在就告诉你,你把这些数字分组在一个正方形盒子里的方法是行不通的。你需要考虑的是窗口的大小。
 
最初,示例代码会提示您输入起点,这样您就可以以某种方式指定“扫描”的开始位置。对于这样一个例子,你可以不受惩罚。,但是,同样的,一个相等的LxW选择更有可能给你带来问题,提示窗口大小2点可以消除这个问题。
回复

使用道具 举报

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:34:26 | 显示全部楼层
对不起,我不太明白你的帖子。
在我之前的帖子中,我试着放一个gif,但似乎效果不太好。
 
对不起,我的英语很差,我正在使用翻译,这意味着有时我不能很好地解释,我无法理解我想说的话,就像之前的帖子:哎呀:
 
在我之前的帖子中,我说我放了2个文件,但失败了,最后没有放。
 
现在,是的,我拿到了文件,看看我是否这样理解自己,因为用词很难:哭:
 
第一个文件是原件,第二个是我打算得到的。
placa1.dxf
placa2.dxf
回复

使用道具 举报

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:38:58 | 显示全部楼层
也许如果我解释一下我的目标,你们会更容易理解。
就是这样,我正在使用激光雕刻机,记录区域是200x200,或者其他值​​取决于我使用的镜头。所以当我有一个比这更大的绘图区域时,我必须在这个区域中加入几个层,然后继续录音。我认为这是显而易见的,这是我的目标。
这是我需要有这个自动化过程的功能之一,这将节省我很多小时的工作。
回复

使用道具 举报

0

主题

101

帖子

103

银币

限制会员

铜币
-2
发表于 2022-7-6 09:42:27 | 显示全部楼层
我想我理解他在追求什么。
 
我不是一个Lisp程序的人,但一种方式来做到这一点。NET类似于lisp的方法是从0,0到200200执行SelectWindow,然后更改属于SelectWindow的所有实体层
 
现在做一个从0,0到200200的CrossingWindow,看看和之前的select窗口相比,CrossingWindow中是否有任何对象。(查看是否有任何对象仅部分位于选择窗口中)
 
如果没有新对象,则下一个窗口将从200,0到400200。
 
如果有新对象,则获取每个对象的边界框
对于右上角大于200的每个边界框,使用最小的Y值作为下一个级别的开始。(因此,如果最低的Y值是180,那么当您移动到下一行时,您从0180开始)
 
对于其他窗口,获取最低的X值作为下一组窗口的开始。
 
在前两组窗口的图片中,d由两个不同的对象组成,因此绿色部分完全落在窗口中,其最低X值将是下一个绿色窗口的X值。
 
095259inq5gx3azqa0btm1.jpg
 
 
可能会出现问题,例如,当你向上移动时,你需要检查一个对象是否已经改变了层,因为一个对象可能会落在多个窗口中。
 
 
如果所有对象与窗口相比都不大于某个大小,那么这可能会起作用。当您得到边界框时,如果它的面积大于窗口面积的百分比,则显示错误消息并停止例程
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:45:12 | 显示全部楼层
 
我也注意到了。我是在“太大”的规则下工作的。我们可以通过“C”而不是“W”修改选择,唯一的问题是它将取代“过大”条件。
 
一个快速的解决方案是创建实体的副本,该副本位于多个窗口中。这样,实体将显示在两个窗口(层)上
 
同样从OP发布的dxf样本来看,200*200框似乎不是从0,0开始的。所以我用“_C”选项测试了代码,结果有点不对劲。
 
 
工作太多
 
 
已更新发布代码
 
附加的lisp包括CopytoPreviousLayer选项
拆分层2。LSP
回复

使用道具 举报

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:49:41 | 显示全部楼层
谢谢你关心我的问题。
 
我一直在测试pBe提供的代码,已经接近我的目标了,一个问题是函数只有k是用直线和圆选择的,但是我自己可以轻松地修复它。
 
检测到的一个问题是大于定义区域的实体问题。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:52:07 | 显示全部楼层
 
我认为我们可以解决这个问题。你用的是CopyToPrevousLayer吗?
需要知道哪一个适合你,这样我才能做出必要的调整。
以及你对代码做了哪些修改。
回复

使用道具 举报

4

主题

42

帖子

38

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:55:42 | 显示全部楼层
使用了你之前放置的两个帖子的功能,需要做些什么来激活这个功能吗?
 
我还需要做的一个修改是对层“Cheio”也执行此功能
但这个问题并不太严重,因为我可以复制函数并从它将扫描的层更改其名称:)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:19 , Processed in 0.781506 second(s), 72 queries .

© 2020-2025 乐筑天下

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