乐筑天下

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

[编程交流] 从已知点进入

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:01:26 | 显示全部楼层
BIGAL,我会使用我在之前的帖子中提交的代码来解决这个问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 12:06:40 | 显示全部楼层
您好,李,谢谢您的建议。问题是,entlast似乎总是返回一条多线的最后一部分,当多条多线组成多条多线时,用户选择了不同的部分。
 
这是完整的代码
 
只需画一条线,比如说10个单位长,在线长度内的同一侧拾取2个点,接受返回的距离,线将绘制一个偏移部分,然后我们根据需要重复多个房屋车道。
 
再试一次,但普林说10个单位长或多个长度。
  1. (princ "\nTo run again type DRV")
  2. (princ "\n")
  3. (defun c:DRV ()
  4. (setq oldsnap (getvar "osmode"))
  5. (command "ucs" "w")
  6. (setq pt1 (getpoint "\npick point 1 left side of driveway:"))
  7. (setq pt1 (list (car pt1)(cadr pt1) 0.0))  ; rip z elevation out
  8. (setq pt2 (getpoint "\npick point 2 right side of driveway:"))
  9. (setq pt2 (list (car pt2)(cadr pt2) 0.0))
  10. (setq dist (distance pt1 pt2))
  11. (setq ang (angle pt1 pt2))
  12. (setq pt3 (polar pt1 ang (/ dist 2.0))) ;1/2 way between drive
  13. (setq obj (entsel  "\nPick back of kerb line"))
  14. (setvar "osmode" 0)
  15. (setq objtype (cdr (assoc 0 (entget (car obj)))))
  16. (IF (or (= objtype "POLYLINE")(= objtype "LWPOLYLINE"))
  17. (progn
  18. (setq objpt (cadr obj))
  19. (princ "\nNow exploding polyline that was picked :")
  20. (command "explode" obj "")
  21. (setq ss (ssget objpt))
  22. (setq obj2 (entget (ssname ss 0)))
  23. )
  24. (setq obj2 (entget (car obj)))   ; else is linepl
  25. )
  26. ;start point of line
  27. (princ "\nEnter new width of driveway or press enter to accept existing  :")
  28. (princ dist)
  29. (setq newdist (getreal "..."))
  30. (setq pt10 (cdr (assoc 10 obj2)))
  31. (setq pt10 (list (car pt10)(cadr pt10) 0.0))  ; rip z elevation out
  32. (princ pt10)
  33. ;end point of line
  34. (setq pt11 (cdr (assoc 11 obj2)))
  35. (setq pt11 (list (car pt11)(cadr pt11) 0.0))  ; rip z elevation out
  36. (princ pt11)
  37. (setq ang3 (angle pt10 pt3))
  38. (setq ang4 (angle pt10 pt11))
  39. (setq dist3 (distance pt3 pt10))
  40. ;may need a check here to ensure angle is always under 90 1.5707
  41. (setq angdiff (- ang3 ang4))   ; use cos(ang) = o/h to cal perp point
  42. (setq dist4 (* (cos angdiff) dist3))
  43. (setq pt4 (polar pt10 ang4 dist4))
  44. (setq dist2 (+ (distance pt3 pt4)10.0 ))
  45. (setq ang2 (angle pt3 pt4))
  46. (if (= newdist nil)(setq newdist dist))
  47. (setq halfdist (/ newdist 2.0))
  48. (setq ang3 (+ ang 3.1417))
  49. (setq pt5 (polar pt3 ang halfdist))
  50. (setq pt6 (polar pt3 ang3 halfdist))
  51. (setq pt7 (polar pt5 ang2 dist2))
  52. (setq pt8 (polar pt6 ang2 dist2))
  53. (setq pt9 (inters pt10 pt11 pt5 pt7))
  54. (setq pt12 (inters Pt10 pt11 pt6 pt8))
  55. (setq dist4 (- (distance pt5 pt9) 0.3)) ; shorten kerbs by 0.3m
  56. (setq ang1 (angle pt5 pt9))
  57. (setq pt13 (polar pt5 ang1 dist4))
  58. (setq dist4 (- (distance pt6 pt12) 0.3))
  59. (setq pt14 (polar pt6 ang1 dist4))
  60. (command "line" pt5 pt13 pt14 pt6 "")  ; draw driveway
  61. (setq ang2 (angle pt12 pt9))
  62. (setq ang3 (angle pt9 pt12))
  63. (setq pt15 (polar pt9 ang2 0.6))
  64. (setq pt16 (polar pt12 ang3 0.6))
  65. (command "break" pt15 pt16)
  66. (command "line" pt15 pt13 "")
  67. (command "line" pt16 pt14 "")
  68. (setvar "osmode" oldsnap)
  69. (setq obj nil)
  70. ;(setq  obj2 nil)
  71. (setq ss nil)
  72. ) ;end defun
  73. (princ)
  74. )

121715ioob73o06t1k04mm.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:12:36 | 显示全部楼层
您是否包括了我提供的递归EntnexttoEnd函数?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 12:15:31 | 显示全部楼层
您好,李,谢谢您的建议,我的错,问题实际上在于break命令,如果它的pline不起作用,但如果您在命令行上运行该行(命令“break”pt15 pt16)效果很好,则始终适用于该行,以便正确计算所有点。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:17:24 | 显示全部楼层
 
尝试替换为:
  1. (command "break" "_non" pt15 "_non" pt16)

这可能很简单,因为你的OSnap正在处理事情。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 03:00 , Processed in 0.328962 second(s), 62 queries .

© 2020-2025 乐筑天下

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