乐筑天下

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

[编程交流] 图纸限制

[复制链接]

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 16:55:34 | 显示全部楼层
嗨,比格尔,
 
这正是我所做的,除了删除重复点,还使用以下代码修剪坐标:
  1. (defun c:DrawPoints()
  2.   (mytrim)     
  3. (setq ptlist pl
  4.        lst1 ptlist
  5. fuzz 0.003)
  6. (remduppts ptlist fuzz)
  7. (sortbyx)
  8. (setq p1 (car ptlist)
  9.        p2 (car (reverse ptlist)))
  10. (sortbyy)
  11. (setq p3 (car ptlist)
  12.        p4 (car (reverse ptlist))
  13.        wx2 (list (car p2) (+ (cadr p4) 10.0))
  14.        wx1 (list (-(car p1) 10.0) (-(cadr p3) 10.0)))
  15. (command "limits" wx1 wx2)
  16. (command "Zoom" "E")
  17. (setq list1 ptlist
  18.        pt1 (car list1))
  19. (while (/= pt1 nil)
  20.    (setq pt1 (car list1))
  21.    (command "point" pt1)
  22.    (setq list1 (cdr list1))
  23. )
  24. (setq pl ptlist)
  25. (princ)
  26. )
  27. (defun sortbyx()
  28. (setq ptlist
  29. (vl-sort ptlist
  30. (function (lambda (e1 e2)
  31. (< (car e1) (car e2))
  32. )
  33. )
  34. ) ;list points by x value (smaller value first)
  35. )
  36. )
  37. (defun sortbyy ()
  38. (setq ptlist
  39. (vl-sort ptlist
  40. (function (lambda (e1 e2)
  41. (< (cadr e1) (cadr e2))
  42. )
  43. )
  44. )
  45. ) ;list points by y value (smaller value first)
  46. )
  47. (defun mytrim()
  48. (setq pl(mapcar '(lambda (x) (list (- (car x) 160000.000) (- (cadr x) 90000.00) (caddr x))) pl))
  49. )
  50. (defun remduppts (pl fuzz / res p)
  51. (repeat (1- (length pl))
  52.    (setq p (car pl))
  53.    (if        (> (distance (list (car p) (cadr p)) (cadr pl)) fuzz)
  54.      (setq res (cons p res))
  55.    )
  56.    (setq pl (cdr pl))
  57. )
  58. (reverse (cons (car pl) res))
  59. )

但是,我使用了最大化显示。我相信这对坐标系做了一些改变,所以当我使用我开发的程序时会出错。当我在另一个没有缩放范围的图形上使用相同的程序时,我可以正常工作。我附上了这些图纸的剪断部分,我在这些图纸上绘制了道路路线的中心线。我正在努力找出问题所在。
171207ejftoo6vv6ev7v66.jpg
171208jz3bespssps0lbag.jpg
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:00:03 | 显示全部楼层
函数mytrim正在更改坐标。如果不想更改坐标系,为什么要使用它?
也许这有助于:
  1. (foreach pt pl
  2. (command "_.point" "_non" pt)
  3. )
  4. (command "_.zoom" "_extents")
  5. (setvar 'limmin (getvar 'extmin))
  6. (setvar 'limmax (getvar 'extmax))
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 17:00:24 | 显示全部楼层
Roy_043,
没有变化;我仍然把中心线标记为第一张图片中的中心线。
至于mytrim函数,其背后有一个很长的故事。几年前,这个论坛的一位成员提供了一个程序(大约3000行代码),使用该程序可以在我的点列表(本例中为点列表)所涵盖的点的绘图中获得z坐标。因此,为了修剪坐标,从而使数字变小,我使用了mytrim。这是一种使用autolisp的数字地形建模。如果我成功地解决了这个问题,我会用“Delaunay”三角剖分再次把它放在这个论坛上。
 
当做
芦荟
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:06:31 | 显示全部楼层
我想我帮不了你。你的问题仍然太神秘了。
但我确信最大化不会改变坐标系。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 17:11:55 | 显示全部楼层
有没有办法在LIMITES命令后用新坐标显示griddisplay(数字为0,1,2),而不进行缩放、范围?。
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

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

铜币
265
发表于 2022-7-5 17:15:09 | 显示全部楼层
Roy_043,
你是对的。缩放和范围不会影响我的坐标系。我的第一张图中的错误是由于两条线没有在一个点相交而不是相交。这样,问题就解决了。非常感谢你,1958年的Commandobill和Bigal的建议。
 
芦荟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:06 , Processed in 0.434051 second(s), 64 queries .

© 2020-2025 乐筑天下

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