乐筑天下

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

[编程交流] 帮助距离和方位lisp

[复制链接]

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 16:58:35 | 显示全部楼层 |阅读模式
大家好,
我想修改我的lisp。我不知道怎么做,我需要一些帮助。
我的代码按距离和方位角绘制直线。这是一个很棒的代码,但可以更好。
我想调用命令,顺时针绘制多边形,只需放置距离和方位角。
这段代码的问题是每次调用代码时,我都必须选择一个拾取点。
 
任何帮助都将是巨大的!
提前感谢
 
  1. ;;;---------------------------------------------
  2. ;;; Rotina para desenhar uma linha com o ângulo
  3. ;;;---------------------------------------------
  4. ;;; Autolisp Rogério 09/12/04
  5. (defun C:AZI ()
  6. (setvar "cmdecho" 0)
  7. ;(setq PT1 (getpoint "Pick o ponto de início: "))
  8. (setq DISTANCIA (getstring "\nDistância: "))
  9. (setq CPTO (STRCAT "@" DISTANCIA "<"))
  10. (setq GRAUS (getstring "\nÂngulo: "))
  11. (setq MINUTOS (getstring "\nMinutos: "))
  12. (setq SEGUNDOS (getstring "\nSegundos: "))
  13. (setq ANG (STRCAT GRAUS "d" MINUTOS "'" SEGUNDOS """))
  14. (princ "\nAzimute: ")
  15. (PRINC CPTO)
  16. (PRINC ANG)
  17. (setq LINHA (STRCAT CPTO ANG))
  18. (prompt "\nPick o ponto de início:")
  19. ;;(command "Poliline" pause CPTO ANG "")
  20. (command "PLINE" pause LINHA "")
  21. (command "units" 2 2 2 4 270 N "insunits" 0);;Decimal=2/ N°Casas=2/ Sistema Angulo=2/ Fração Angulo=4/ Direção Angulo=0/ Relógio=N
  22. (setvar "cmdecho" 0)
  23. (PRINC)
  24. )
  25. (Princ "\nDigite AZ para iniciar.")
  26. (Princ)
  27. ;EXPLICAÇÃO: by Marcio
  28. ;================
  29. ;Command: -UNITS
  30. ;================
  31. ; 1. Scientific 1.55E+01
  32. ; 2. Decimal 15.50
  33. ; 3. Engineering 1'-3.50"
  34. ; 4. Architectural 1'-3 1/2"
  35. ; 5. Fractional 15 1/2
  36. ;With the exception of Engineering and Architectural formats,
  37. ;these formats can be used with any basic unit of measurement.
  38. ;For example, Decimal mode is perfect for metric units as well
  39. ;as decimal English units.
  40. ;Enter choice, 1 to 5 <2>:
  41. ;--------------------------------------------------------------
  42. ;Enter number of digits to right of decimal point (0 to Cool <2>:
  43. ;--------------------------------------------------------------
  44. ;Systems of angle measure: (Examples)
  45. ; 1. Decimal degrees 45.0000
  46. ; 2. Degrees/minutes/seconds 45d0'0"
  47. ; 3. Grads 50.0000g
  48. ; 4. Radians 0.7854r
  49. ; 5. Surveyor's units N 45d0'0" E
  50. ;Enter choice, 1 to 5 <2>:
  51. ;-------------------------------------------------------------- --------
  52. ;Enter number of fractional places for display of angles (0 to Cool <4>:
  53. ;-------------------------------------------------------------- --------
  54. ;Direction for angle 0d0'0":
  55. ; East 3 o'clock = 0d0'0"
  56. ; North 12 o'clock = 90d0'0"
  57. ; West 9 o'clock = 180d0'0"
  58. ; South 6 o'clock = 270d0'0"
  59. ;Enter direction for angle 0d0'0" <0d0'0">:
  60. ;-------------------------------------------
  61. ;Measure angles clockwise? [Yes/No] <N>
  62. ;-------------------------------------------
  63. ;================ ==
  64. ;Command: INSUNITS
  65. ;==================
  66. ;Enter new value for INSUNITS <0>:
  67. ;0 Unspecified (No units) = unitless
  68. ;1 Inches
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 17:03:45 | 显示全部楼层
Maruga_SP,
 
我在工作中使用了类似的lisp。这在某种程度上与您正在设计的目标相同。也许我的lisp中的元素可以帮助你完成任务。
 
试试这个,看看它是否能帮到你。
 
  1. (SETQ ANGBASEE (GETVAR "ANGBASE"))
  2. (SETQ ANGDIRR (GETVAR "ANGDIR"))
  3. (SETQ LUNITSS (GETVAR "LUNITS"))
  4. (SETQ LUPRECC (GETVAR "LUPREC"))
  5. (SETQ AUNITSS (GETVAR "AUNITS"))
  6. (SETQ AUPRECC (GETVAR "AUPREC"))
  7. (SETVAR "LUNITS" 2)
  8. (SETVAR "ANGBASE" (/ pi 2.0))
  9. (SETVAR "ANGDIR" 1)
  10. (SETVAR "LUPREC" 6)
  11. (SETVAR "AUNITS" 0)
  12. (SETVAR "AUPREC" 3)
  13. ;
  14. (defun bear (P1)
  15.   (setq ang_ans ""   
  16.      ans_deg ""
  17.      ans_min ""
  18.      char_found ""
  19.      ans_secs "")
  20. (setq ang_ans (getstring "\nEnter bearing angle in Deg.MMSS :"))
  21. (setq ans_len (strlen ang_ans))
  22. (setq x 0)
  23. (while (/= char_found ".")
  24.    (setq x (+ x 1))
  25.    (setq ans_deg (strcat ans_deg char_found))
  26.    (setq char_found (substr ang_ans x 1))
  27.    (if (= x 9)(setq char_found "."))
  28.   )
  29.   (setq x (+ x 1))
  30.   (setq ans_min (substr ang_ans x 2))
  31.   (setq x (+ x 2))
  32.   (setq ans_secs (substr ang_ans x 2))
  33.       
  34.    (if (= ans_min "")(setq ans_min "0"))
  35.    (if (= ans_secs "")(setq ans_secs "0"))
  36.    (setq ang (dtr (+ (atof ans_deg)(/ (atof ans_min) 60.0)(/ (atof ans_secs) 3600.0))))   
  37.    (setq dist (* (getdist P1 "\nLength of boundary ? (m) :") mm_vs_m))
  38.    (setq p2 (polar p1 ang dist))
  39.    (setq bear_call 1)
  40. )

 
非常感谢。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:07:36 | 显示全部楼层
Madruga_SP,
 
不知何故,在过帐时,在传输过程中出现了一些错误。
 
无论如何,我随函附上autolisp WCB供您试驾。
 
让我知道你过得怎么样。
 
图片显示了使用WCB的结果。希望这能有所帮助。
 

WCB。lsp
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 17:10:45 | 显示全部楼层
 
我可以提出不同的建议吗
启动记事本:
键入的数据
距离,角度[角度+分钟+秒]
距离,角度[角度+分钟+秒]。。。。
保存文件并关闭记事本
 
 
提示输入文字高度
选择起点。
读取文件
砰砰。。[绘制线和文字]
关闭文件
 
完成。
 
听起来很简单,嗯?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:12:37 | 显示全部楼层
干得好。
 
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;
  3. Autolisp - WCB (whole circle bearing and distance) by Hew Choon Ming at [email="ocean_hew@hotmail.com"]ocean_hew@hotmail.com[/email];
  4. 2009
  5. ;; Draw Setting Out of Lines with Bearing and Distance.
  6. ;; Remove
  7. comments on code if you want circles at each end points, directional bearings
  8. and distances is labelled at midpt of lines
  9. ;;
  10. ;; Enter appropriate Text
  11. height for labelling Azimuths and distances
  12. ;; Select or pick points for AZ
  13. and distances. Labelling is directional and can be clockwise or
  14. anticlockwise
  15. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  16. (princ "Type: WCB to run.")(terpri)
  17. (princ "Setout WCB and
  18. Distance Between Points")
  19. (princ)
  20. (defun C:WCB (/ pt1 pt2 middle DLENGTH aangle APA)
  21.   (setq
  22. oldsnap (getvar "Osmode")
  23.   oldangdir (getvar
  24. "angdir")
  25.   oldangbase (getvar "angbase")
  26. )
  27.    (setvar "cmdecho" 0)
  28.    (setvar
  29. "angdir" 1) ; clockwise
  30.    (setvar "angbase" (/ pi 2)) ; zero
  31. direction north ; for setting out using bearing, azimuth starts from
  32. north
  33. ;;Get text height for value label
  34.    (setq apa
  35. (getreal "\n Text Height for value label: "))
  36.    (if apa nil
  37. (setq apa 3.0))
  38. (While
  39.       (Setq
  40. Pt1 (getpoint "\nPick the Location of Start
  41. Pt"))(terpri)
  42.       (setq oldsnap1 (getvar
  43. "Osmode"))
  44.       (setq pt2 (getpoint "\nPick
  45. Location of End Pt? " pt1))
  46.       (command
  47. "line" pt1 pt2 "")
  48. ;;(Setq Pt2 (getpoint "Pick the Location of End Pt"))(terpri)
  49.       (Setq middle (List (/ (+ (car pt1) (car
  50. pt2)) 2.0) (/ (+ (cadr pt1) (cadr pt2))
  51. 2.0)))
  52.       (Setq Dlength (distance pt1 pt2))
  53.       (setq aangle (angle pt1
  54. pt2))
  55.       (command "Line" Pt1 PT2 "")
  56. ;; Remove semi-colon if you want circles at each end points
  57. ;;(command
  58. "circle" PT1 (* Apa 0.5))
  59. ;;(command "circle" PT2 (* Apa 0.5))
  60.      (setvar "Osmode" 0) ; no
  61. snaps
  62.         (If (Or(<= aangle
  63. (/ pi 2))(>= aangle (* pi
  64. 1.5)))
  65. (progn
  66. (command "text" "j" "Bc" middle apa pt2 (RTOS Dlength 2
  67. 3))
  68. (Setq middleoff (polar middle (+ (angle middle pt2) -1.5708) (* 0.4
  69. apa)))
  70. (Setq pt2Off (polar pt2 (+ (angle middle pt2) -1.5708)(* 0.4
  71. apa)))
  72. (command "text" "j" "tc" middleoff apa pt2off (strcat (angtos aangle 1 5)
  73. ">>"))
  74. ) ;End progn
  75.          ) ;End
  76. if
  77.        (if  (And(< aangle (* pi
  78. 1.5))(> aangle (/ pi
  79. 2)))
  80. (progn
  81. (command "text" "j" "Bc" middle apa pt1 (RTOS Dlength 2
  82. 3))
  83.            (Setq
  84. middleoff (polar middle (+ (angle middle pt1) -1.5708) (* 0.4
  85. apa)))
  86. (Setq pt1Off (polar pt1 (+ (angle middle pt1) -1.5708) (* 0.4
  87. apa)))
  88. (command "text" "j" "tc" middleoff apa pt1off (strcat "<<" (angtos aangle
  89. 1 5)))
  90.            )
  91. ;End progn
  92.         ) ;End
  93. if
  94.      (setvar "Osmode" oldsnap1)
  95. ) ;End while
  96. (setvar "Osmode" oldsnap)
  97. (setvar "angdir"
  98. oldangdir)
  99. (setvar "angbase" oldangbase)
  100. (princ)
  101. )

 
命令:演示
用此格式填充数据
@500
@500
@300
@1007.56
 
 
选取起点:
输入文字高度:20
 
HTH公司
 
另一个版本{使用为字符串值{angtos}收集的点}
 
  1. ; error: no function definition: WHOLE
  2. _$

 
命令:Demo2
回复

使用道具 举报

1

主题

12

帖子

11

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:15:34 | 显示全部楼层
@CM Hew
非常感谢您在这里发布代码。
 
我的画中没有任何存在的点。
我必须编辑每个距离和方位角。
例如
@26.19
@46.50
@15.75
@42.85
 
@pBe公司
谢谢你的优秀代码!
很有魅力!
 
如果不是要求太多。
比加尔说:
这个选择对我来说似乎很好。例如
距离:12.50
方位角:77.4550
 
有人能帮我写这样的代码吗?
 
 
非常感谢各位。
你帮了我很多。
回复

使用道具 举报

24

主题

135

帖子

111

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 17:19:26 | 显示全部楼层
 
这是针对我还是比格尔的?这是否意味着将显示“500-Az 47d56'3.3”而不是“500-Az 47d56'3.3”
距离:500
方位角:
?
回复

使用道具 举报

1

主题

12

帖子

11

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:24:00 | 显示全部楼层
 
你好,pBe,
比格尔对代码提出了一个非常好的建议,对我来说听起来很好。
但由于我的知识有限,这太难处理了。
因此,我请求帮助创建lisp。
 
你的代码“demo”很棒,效果完美。
但我想知道一个代码,当我调用时,询问角度和距离,所以在继续命令角度和距离后绘制一条多段线,直到完成poligno。
无需将信息置于多段线之上。
 
例如
方位角:47.5633(平均值=47d56'33”)
距离:500
175840oou1b5wjy0a1kj5a.jpg
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 17:24:38 | 显示全部楼层
45d2'3“=45.23?或
45d23'3“=45.233?哪些数字代表分钟和秒?你怎么知道?
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-5 17:29:58 | 显示全部楼层
你好,pBe,
请看第5号帖子。
 
比格尔更好地解释了任务。
 
亲切的问候
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 12:56 , Processed in 0.627727 second(s), 85 queries .

© 2020-2025 乐筑天下

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