乐筑天下

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

[编程交流] 中心线坐标和

[复制链接]

20

主题

74

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:07:04 | 显示全部楼层 |阅读模式
我附上了一个样本图纸,其中我有一个20米的路线和段。我需要一个中心线和偏移的结果,如前所述。是否可以通过任何方式,通过lisp或vba实现。这对像我这样的许多人来说太有用了。我太需要它了。这样我可以节省我太多的时间,避免错误。请帮帮我
PRAC。图纸
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:11:09 | 显示全部楼层
试试这个。它没有太多的错误捕捉功能,但可以完成任务。
 
  1. (defun c:test ()
  2. (setq sel (entsel "\nSelect Centerline Alignment: "))
  3. (if sel
  4.    (progn
  5.      (setq obj (vlax-ename->vla-object (car sel)))
  6.      (setq sta (getreal "\nEnter Station Distance: "))
  7.      (if sta
  8. (progn
  9.   (setq cl-pol (vlax-curve-getPointAtDist obj sta))
  10.   (setq los (getreal "\nEnter Left Offset Distance: "))
  11.   (setq ros (getreal "\nEnter Right Offset Distance: "))
  12.   (if (and los ros)
  13.     (progn
  14.       (setq fd (vlax-curve-getFirstDeriv obj (vlax-curve-getparamAtPoint obj cl-pol)))
  15.       (setq angR (- (angle '(0 0 0) fd) (* pi 0.5)))
  16.       (setq angL (+ (angle '(0 0 0) fd) (* pi 0.5)))
  17.       (setq pR (polar cl-pol angR ros))
  18.       (setq pL (polar cl-pol angL los))
  19.       (BTH:dro cl-pol 5)
  20.       (BTH:drx pR 1)
  21.       (BTH:drx pL 3)
  22.       (grdraw cl-pol pL 3)
  23.       (grdraw cl-pol pR 1)
  24.       (princ "\n**********************************")
  25.       (princ (strcat "\nCenterline Station: " (rtos sta 2 2)))
  26.       (Princ (strcat "\nNorthing: " (rtos (cadr cl-pol) 2 2)
  27.                      "  Easting: " (rtos (car cl-pol) 2 2)))
  28.       (princ "\n**********************************")
  29.       (princ (strcat "\nLeft Offset Distance: " (rtos los 2 2)))
  30.       (princ (strcat "\nNorthing: " (rtos (cadr pL) 2 2)
  31.                      "  Easting: " (rtos (car pL) 2 2)))
  32.       (princ "\n**********************************")
  33.       (princ (strcat "\nRight Offset Distance: " (rtos ros 2 2)))
  34.       (princ (strcat "\nNorthing: " (rtos (cadr pR) 2 2)
  35.                      "  Easting: " (rtos (car pR) 2 2)))
  36.       (princ "\n**********************************")
  37.       )
  38.     )
  39.   )
  40. )
  41.      )
  42.    )
  43. (princ)
  44. )
  45. (defun BTH:drx (ctr clr / COR1 COR2 COR3 COR4 VS XS XS2)
  46. (setq vs (getvar "viewsize"))
  47. (setq xs (/ vs 20))
  48. (setq xs2 (/ xs 2))
  49. (setq cor1 (polar ctr (* pi 0.25) xs2))
  50. (setq cor2 (polar ctr (* pi 0.75) xs2))
  51. (setq cor3 (polar ctr (* pi 1.25) xs2))
  52. (setq cor4 (polar ctr (* pi 1.75) xs2))
  53. (grdraw ctr cor1 clr 0)
  54. (grdraw ctr cor2 clr 0)
  55. (grdraw ctr cor3 clr 0)
  56. (grdraw ctr cor4 clr 0)
  57. )
  58. (defun BTH:dro (ctr clr / COR0 COR1 COR10 COR11 COR12 COR13 COR14 COR15 COR16 COR17 COR18 COR19 COR2 COR3 COR4 COR5 COR6 COR7 COR8 COR9 VS XS XS4)
  59. (setq vs (getvar "viewsize"))
  60. (setq xs (/ vs 20))
  61. (setq xs4 (/ xs 4))
  62. (setq cor0 (polar ctr 0 xs4))
  63. (setq cor1 (polar ctr (* pi 0.1) xs4))
  64. (setq cor2 (polar ctr (* pi 0.2) xs4))
  65. (setq cor3 (polar ctr (* pi 0.3) xs4))
  66. (setq cor4 (polar ctr (* pi 0.4) xs4))
  67. (setq cor5 (polar ctr (* pi 0.5) xs4))
  68. (setq cor6 (polar ctr (* pi 0.6) xs4))
  69. (setq cor7 (polar ctr (* pi 0.7) xs4))
  70. (setq cor8 (polar ctr (* pi 0. xs4))
  71. (setq cor9 (polar ctr (* pi 0.9) xs4))
  72. (setq cor10 (polar ctr pi xs4))
  73. (setq cor11 (polar ctr (* pi 1.1) xs4))
  74. (setq cor12 (polar ctr (* pi 1.2) xs4))
  75. (setq cor13 (polar ctr (* pi 1.3) xs4))
  76. (setq cor14 (polar ctr (* pi 1.4) xs4))
  77. (setq cor15 (polar ctr (* pi 1.5) xs4))
  78. (setq cor16 (polar ctr (* pi 1.6) xs4))
  79. (setq cor17 (polar ctr (* pi 1.7) xs4))
  80. (setq cor18 (polar ctr (* pi 1. xs4))
  81. (setq cor19 (polar ctr (* pi 1.9) xs4))
  82. (grdraw cor0 cor1 clr 0)
  83. (grdraw cor1 cor2 clr 0)
  84. (grdraw cor2 cor3 clr 0)
  85. (grdraw cor3 cor4 clr 0)
  86. (grdraw cor4 cor5 clr 0)
  87. (grdraw cor5 cor6 clr 0)
  88. (grdraw cor6 cor7 clr 0)
  89. (grdraw cor7 cor8 clr 0)
  90. (grdraw cor8 cor9 clr 0)
  91. (grdraw cor9 cor10 clr 0)
  92. (grdraw cor10 cor11 clr 0)
  93. (grdraw cor11 cor12 clr 0)
  94. (grdraw cor12 cor13 clr 0)
  95. (grdraw cor13 cor14 clr 0)
  96. (grdraw cor14 cor15 clr 0)
  97. (grdraw cor15 cor16 clr 0)
  98. (grdraw cor16 cor17 clr 0)
  99. (grdraw cor17 cor18 clr 0)
  100. (grdraw cor18 cor19 clr 0)
  101. (grdraw cor19 cor0 clr 0)
  102. )
回复

使用道具 举报

20

主题

74

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:16:10 | 显示全部楼层
尊敬的先生,我已经试过了,但没有达到预期效果。我需要表格格式中的中心线和两侧偏移的坐标。为了理解目的,我修改了这个问题。请帮帮我。从另一个角度来说,这是一项非常耗时的工作,对我们许多人来说,像我一样,这是一项不可避免的工作。
PRAC1.dwg
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:17:00 | 显示全部楼层
你所要求的当然是可能的。虽然合并和格式化单元格需要做很多工作。我可以编写一个lisp来实现这一点,尽管这需要一些时间。
 
当做
 
hippe013
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:21:31 | 显示全部楼层
Hippe013看了一下你做了什么,对简单的偏移例程很感兴趣,跳出了几个明显的东西,简单的一个就是暗示多个距离的间隔和循环。现在比较难的一个是放样序列总是有切线点或以正确的顺序在方向上变化,也就是pline顶点,可能首先计算出一个链长列表,这具有将个体也添加到固定间距的优势。需要表格或csv之类的选项。我在生成表格方面做了一些工作,这并不难。我下周可能有一些时间,所以将尝试重复并添加链测长度。最后一个要考虑的是改变方向,比如说45度,在S&E之前,1/2或结束,或两者都是。
 
通道0.0 LXYZ R XYZ
CH 12.35是切线pt LXYZ RXYZ
通道20 LXYZ RXYZ
CH 22.35是切线pt LXYZ RXYZ
通道30 LXYZ RXYZ
回复

使用道具 举报

20

主题

74

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:25:58 | 显示全部楼层
尊敬的先生,我知道我可以从bigal先生和hippe013先生这样的朋友那里得到,所以我可以等,没问题。但是,如果已经这样做了,那将非常有帮助。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:29:13 | 显示全部楼层
这就是我想到的。如果这是你想要的,请告诉我。
 
当做
 
hippe013
 
校准表。lsp
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:31:54 | 显示全部楼层
比加尔,
 
我使用
  1. (vlax-curve-getFirstDeriv curve-obj  param)
以找到给定参数处的相切。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:34:57 | 显示全部楼层
Hippe013下周将有时间玩几件事,Vl返回pline的长度,以便间距可以列出距离,(10 20 30 40 50)
然后将pline的坐标作为距离(0.0 12.35 37.86 42.35 52.3)
然后,您的STA是新列表中的每个值(0.0 10 12.35 20 30 37.86 40 42.35 50 52.3),而不是要求每个值。
然后可能会询问额外ch的STA列表(0.0 10 12.35 20 30 33.5 37.86 40 42.35 44.0 50 52.3)
回复

使用道具 举报

20

主题

74

帖子

54

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 18:36:16 | 显示全部楼层
尊敬的先生,它没有给出坐标,只有我有这张桌子。我需要例子中显示的坐标。怎么做?????
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:36 , Processed in 0.375601 second(s), 72 queries .

© 2020-2025 乐筑天下

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