乐筑天下

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

挑战:将高程转换为等高线

[复制链接]

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2021-10-12 16:07:57 | 显示全部楼层 |阅读模式
嘿,沼泽者,
我之前发布了关于根据等高线为块分配高程的帖子。有一些好主意,但不幸的是,我太忙了,无法写这个东西。所以我想我会把它贴在这里,并开源结果。我得到我想要的代码,有人得到报酬,未来的程序员可以使用结果。对每个人来说,胜利,更不用说这可能是相当有趣的。事后我决定包含LISP代码,因此,如果需要将这篇文章移动到不同的地方,管理员可以这样做。
问题:
第一个问题是确定哪些对象用于高程模型,以及在哪里使用。如果可能的话,我想避免用户在此处进行交互,但可能是需要提示用户输入某些高程图层或其他内容。如果解决方案需要用户交互,则解决方案必须包含执行此操作的接口。
第二个问题是从高程模型中插值高程值并将这些值分配给块。如果点落在建议坡度的范围内,则应从建议的坡度分配高程。如果没有,则应从现有成绩中分配它们。
挑战图形文件在这里。
代码:
代码必须是 .NET C# 或 LISP。试着好好评论它。不要发布编译好的代码,我不会运行它(其他人也不应该)。在文件顶部的注释中包含您的用户名。所有发布的代码都将属于公共领域。每个用户一个条目。
.NET:发布一个完整的sln文件,我可以在VS2019中打开并编译,我将编译好的dll netload到vanilla AutoCAD 2021中。
LISP:发布未编译的 LISP 文件。
抽奖和挑战
符合条件。DWG:创建命令“RACE”。它将提示用户为现有轮廓和建议的轮廓选择图层/或对象。使用这些等值线,计算并设置 Qualifer.dwg中试块的高程。所有块的仰角都应该在我在那里显示的.25'以内(毕竟,我的数学可能是错误的)请注意,外部参照中的基本文件是扭曲的,而不是0,0等。有时CAD猴子会做一些奇怪的事情,我们必须适应这一点。
比赛。DWG:如果你的代码符合条件,我会在我的机器上对这个绘图运行3次,并平均时间。我将使用 AutoCAD 2021 进行测试。此图形中有一个包含所有轮廓的外部参照。产生与其他参赛作品不一致(在.25'以内)的提升的代码将没有资格获得奖品。在项目中包括计时器。从用户完成图层选择时开始计时器。命令完成后,将经过的时间打印到命令行。
截止日期:2021年10月22日下午5点。MST。
奖品:
以PayPal支付,加密,但是我可以把它给你。
最快的.NET解决方案:$ 400
最快的LISP解决方案$ 400
第二快(要么):$ 100
捐赠给沼泽:$ 200
如果需要问题/澄清,我会尽我所能在截止日期之前清除它们。我应该在下周有结果。
祝你好运!

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2021-10-12 16:38:42 | 显示全部楼层
非常感谢您考虑向TheSwamp捐款!任何捐款,尤其是这种规模的捐款,都会帮助我保持这个地方的开放和运行。
祝大家好运。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-10-13 00:27:50 | 显示全部楼层
我认为您的方法是错误的,是的,您可以使用Z高程的plines/lines来创建TIN表面。一旦有了TIN,就有了一个三角形的3d面网络。因此,可以正确计算三维面上任何一点的z值,这不是火箭科学,而是免费赠送的。
在YMG的Cadtutor三角测量中,TriangV0.5.9.LSP可能会有所帮助。
CIV3D已经为内置点计算出Z,包括使用线。
现在,3dface代码的要点在哪里?https://forums . Autodesk . com/t5/visual-lisp-AutoLISP-and-general/choose-point-on-3d face/TD-p/1601829
我赢了吗?或者我刚刚救了你$$$$将尝试找到时间在3dface上按链接编码pt。
好的,如果您查看帮助并查看CAL函数,您会发现这一个ilp(p1,p2,p3,p4,p5 ),因此p1是平面Z中的xyz可以是0,p2是相同的xy,但是是3d面上方的虚拟Z,p3,p4,p5是3d面的3个点。
另一种方法是使用UCS 3点和trans函数计算z。
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

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

铜币
355
发表于 2021-10-13 11:14:44 | 显示全部楼层
在我的老式电脑上,花了半个小时才完成比赛。dwg
我认为LISP不是一个好选择(即使在速度更快的PC上)
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2021-10-13 11:52:52 | 显示全部楼层

我不确定这样的数据集需要处理什么。我期待着找到答案
就LISP和.NET而言,我真的不知道。我知道RJP的LISP代码始终围绕我的.NET代码运行
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2021-10-13 18:21:06 | 显示全部楼层

是的,我几乎可以肯定我的方法可以改进。这就是挑战的原因。
澄清一下:我知道我已经超出了我的能力范围,如果您看到比我建议的更好的从图纸中提取数据的方法,请编写代码并展示给我们大家。如果有一些更有效的特殊方法可以在普通CAD中使用,那就是我正在努力寻找的。也许是锡表面,也许是巴克明斯特变换点乘以一个独角兽矩阵,我真的不知道。我希望大多数/所有的条目会比我做的更有效率。见鬼,我甚至不确定我的数学是否正确,这就是为什么我在海拔答案上给了0.25的模糊系数。
我很期待了解社区中的巫师是如何做到这一点的。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-10-14 19:18:10 | 显示全部楼层
提供的DWG看起来像是来自CIV3D或类似产品,因此获得一个TIN也会让生活变得更轻松。除非转换为三角网,否则仅使用等高线并不是一个好主意,尽管不如原始三角网好
这是CIV3D帮助中的一个页面https://knowledge.autodesk.com/support/civil-3d/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/Civil3D-UserGuide/files/GUID-FDBDB4BD-86C1-4A01-9EC3-FEAEF7DF0A97-htm.html
好的,(命令“cal”和“ilp(p1,p2,p3,p4,p5)”将返回3dface,p3,p3,p5与线p1,p2相交的点XYZ,p1将表示z=0,p2 z=10000。
因此我将取一个点,使用一个范围在其周围进行ssget 3Dfaces,dwg可能有10000个三角形,因此可能仅获得20个3DFacess,并在没有代码的情况下进行ilp。如果不查看所有的3dfaces,速度会非常快。
一些测试代码,但在我继续之前需要您的dwg和3DFacess。
  1. (defun c:test ( )
  2. (while (setq p1 (getpoint "\npick point"))
  3. (setq p2 (mapcar '+ p1 (list 0.0 0.0 10000.0)))
  4. (setq 3d (entget (car (entsel "\npick 3dface"))))
  5. (setq p3 (cdr (assoc 10 3d)))
  6. (setq p4 (cdr (assoc 11 3d)))
  7. (setq p5 (cdr (assoc 12 3d)))
  8. (setq  zpt  (cal "ilp(p1,p2,p3,p4,p5)"))
  9. (if (= zpt nil)
  10. (princ "\nPoint not on 3dface")
  11. (alert (strcat "\nPoint is X= " (rtos (car zpt) 2 3)  " Y= "  (rtos (cadr zpt) 2 3) " Z= " (rtos (caddr zpt) 2 3)))
  12. )
  13. (setq zpt nil)
  14. )
  15. (princ)
  16. )
  17. (c:test)

回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2021-10-14 22:15:39 | 显示全部楼层

我希望在普通AutoCAD/BricsCAD的应用程序中使用此代码。我没有Civil3D,但我们总是从客户那里得到这样的图纸。该应用程序需要在没有Civil3D的情况下工作。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2021-10-23 12:51:31 | 显示全部楼层
该死!没有接受者
我如何组织此活动以吸引更多的人?欢迎提出建议。
回复

使用道具 举报

14

主题

275

帖子

6

银币

后起之秀

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

铜币
331
发表于 2021-10-23 17:36:07 | 显示全部楼层
嗯,就我个人而言,我不理解查伦斯。您需要一个函数,该函数需要两组轮廓线,但您需要该函数同时在一组轮廓线上运行
还有读取外部参照和ucs内容的资格,您实际上想要什么?这是一个完整的应用程序,只具有该功能还是处理流程的代码?在后一种情况下,最好将重点放在如何处理特征线、带曲线的轮廓、交叉轮廓、给定或计算的边界等问题上。
我确实有一些代码可用于创建一系列点的三角剖分,并且像Bigal也建议的那样,计算三角形内点的位置并不困难。但我不想花太多时间编写所有其他代码,但这是我个人的感受。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 01:09 , Processed in 0.230206 second(s), 77 queries .

© 2020-2025 乐筑天下

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