乐筑天下

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

[编程交流] 如何链接属性块wi

[复制链接]

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 07:47:20 | 显示全部楼层 |阅读模式
你好
我需要一个帮助来解决我的问题,我有一个例程,下面给出了它在我的图纸上给出了纬度和经度。
但是我想要一个可以帮助我解决问题的lisp。
e、 g.使用这个lisp我们得到纬度和经度。
现在,从块1开始,我想用经度替换A°B'C“N,用纬度替换E°F'G”E。
这给出了我在block2中给出的结果。
 
谢谢
块2.dwg
块1.dwg
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 07:53:32 | 显示全部楼层
对不起,我忘了提及我在区块2图纸中使用了42区和半球-N
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:03:20 | 显示全部楼层
只需将块作为lisp的一部分插入到co ord,然后它会自动要求两个属性,只需要一个简单的额外行
 
  1. (command "Insert" "Dwg1" pt 1 1 0 Lat long)
  2. Change
  3. (princ (strcat "\n Latitude to (setq Lat (strcat "Latitude
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 08:11:05 | 显示全部楼层
非常感谢BIGAL
 
我已经根据你的建议更改了我的lisp,我的新修改lisp现在是
  1. (defun C:1 ()
  2. (setq lonzone (getint "\n Enter Zone:"))
  3. (initget "N S")
  4. (setq Hem (getkword "\n Enter the Hemisphere (S/N):"))
  5. (setq Pnt (Getpoint "\n Specify Point:"))
  6. (setq Xval (car Pnt))
  7. (setq Yval (car (cdr Pnt)))
  8. (if (= Hem "S")
  9.    (setq Y (- 10000000 Yval))
  10.    (setq Y Yval)
  11. )
  12. (if (and (or (= Hem "S") (= Hem "N")) (= Yval 0.0))
  13.    (progn
  14.      (setq Y Yval)
  15.      (setq Hem "Equator")
  16.    )
  17.    (progn
  18.      (setq Y Y)
  19.      (Setq Hem Hem)
  20.    )
  21. )
  22. (setq b 6356752.3142)
  23. (setq a 6378137.0)
  24. (setq X (- 500000.0 Xval))
  25. (setq e (sqrt (- 1.0 (expt (/ b a) 2.0))))
  26. (setq k0 0.9996)
  27. (setq meridional-arc (/ Y k0))
  28. (setq        mu (/ meridional-arc
  29.       (* a
  30.          (- 1
  31.             (/ (expt e 2) 4)
  32.             (/ (* 3 (expt e 4)) 64)
  33.             (/ (* 5 (expt e 6)) 256)
  34.          )
  35.       )
  36.    )
  37. )
  38. (setq        e1 (/ (- 1 (expt (- 1 (expt e 2)) 0.5))
  39.       (+ 1 (expt (- 1 (expt e 2)) 0.5))
  40.    )
  41. )
  42. (setq j1 (- (/ (* 3 e1) 2) (/ (* 27 (expt e1 3)) 32)))
  43. (setq j2 (- (/ (* 21 (expt e1 2)) 16) (/ (* 55 (expt e1 4)) 32)))
  44. (setq j3 (/ (* 151 (expt e1 3)) 96))
  45. (setq j4 (/ (* 1097 (expt e1 4)) 512))
  46. (setq        footprint-latitude
  47. (+ mu
  48.     (* j1 (sin (* 2.0 mu)))
  49.     (* j2 (sin (* 4.0 mu)))
  50.     (* j3 (sin (* 6.0 mu)))
  51.     (* j4 (sin (* 8.0 mu)))
  52. )
  53. )
  54. (setq eprime2 (/ (* e e) (- 1.0 (* e e))))
  55. (setq c1 (* eprime2 (expt (cos footprint-latitude) 2)))
  56. (setq        t1 (expt (/ (sin footprint-latitude) (cos footprint-latitude))
  57.          2
  58.    )
  59. )
  60. (setq        r1 (/ (* a (- 1 (expt e 2)))
  61.       (expt (- 1
  62.                (* (expt e 2)
  63.                   (expt (sin footprint-latitude) 2)
  64.                )
  65.             )
  66.             1.5
  67.       )
  68.    )
  69. )
  70. (setq        n1 (/ a
  71.       (expt (- 1
  72.                (* e
  73.                   e
  74.                   (sin footprint-latitude)
  75.                   (sin footprint-latitude)
  76.                )
  77.             )
  78.             0.5
  79.       )
  80.    )
  81. )
  82. (setq d (/ X (* n1 k0)))
  83. (setq
  84.    q1 (/ (* n1 (/ (sin footprint-latitude) (cos footprint-latitude)))
  85.   r1
  86.       )
  87. )
  88. (setq q2 (/ (* d d) 2))
  89. (setq        q3 (/ (* (- (+ 5
  90.                (* 3 t1)
  91.                (* 10 c1)
  92.             )
  93.             (* 4 c1 c1)
  94.             (* 9 eprime2)
  95.          )
  96.          (expt d 4)
  97.       )
  98.       24
  99.    )
  100. )
  101. (setq        q4 (/ (* (- (+ 61
  102.                (* 90 t1)
  103.                (* 298 c1)
  104.                (* 45 t1 t1)
  105.             )
  106.             (* 3 c1 c1)
  107.             (* 252 eprime2)
  108.          )
  109.          (expt d 6)
  110.       )
  111.       720
  112.    )
  113. )
  114. (setq q6 (/ (* (+ 1 (* 2 t1) c1) (expt d 3)) 6))
  115. (setq        q7 (/ (*
  116.         (+ (- (+ (- 5 (* 2 c1)) (* 28 t1)) (* 3 c1 c1))
  117.            (* 8 eprime2)
  118.            (* 24 t1 t1)
  119.         )
  120.         (expt d 5)
  121.       )
  122.       120
  123.    )
  124. )
  125. (setq zone-cm (- (* 6.0 lonzone) 183.0))
  126. (setq lat (- footprint-latitude (* q1 (+ (- q2 q3) q4))))
  127. (setq latitude (* (/ 180 pi) lat))
  128. (if (> latitude 90.0)
  129.    (setq latitude 90.0)
  130.    (setq latitude latitude)
  131. )
  132. (setq latdeg (fix latitude))
  133. (setq latmins (* (- latitude (fix latitude)) 60))
  134. (setq latsecs (* (- latmins (fix latmins)) 60))
  135. (setq long (/ (+ (- d q6) q7) (cos footprint-latitude)))
  136. (setq longr (* (/ 180 pi) long))
  137. (setq longitude (- zone-cm longr))
  138. (if (< longitude 0.0)
  139.    (setq lonhem "W")
  140.    (setq lonhem "E")
  141. )
  142. (if (< longitude 0.0)
  143.    (setq longitude (* -1 longitude))
  144.    (setq longitude longitude)
  145. )
  146. (setq londeg (fix longitude))
  147. (setq lonmins (* (- longitude (fix longitude)) 60))
  148. (setq lonsecs (* (- lonmins (fix lonmins)) 60))
  149. (setq Lat (strcat "Latitude" (itoa latdeg)
  150.          "°"
  151.          (itoa (fix latmins))
  152.          "'"
  153.          (rtos latsecs 2 2)
  154.          "''"
  155.          Hem
  156. )
  157. )
  158. (setq long (strcat "Longitude" (itoa londeg)
  159.          "°"
  160.          (itoa (fix lonmins))
  161.          "'"
  162.          (rtos lonsecs 2 2)
  163.          "''"
  164.          lonhem
  165. )
  166. )
  167. (command "Insert" "test" pnt 1 1 0 Lat long)
  168. (princ)
  169. )

 
但当我用我附加的属性块处理它时,它会出错。
 
它显示的错误是
  1. Command: 1
  2. Enter Zone:42
  3. Enter the Hemisphere (S/N):N
  4. Specify Point:Unknown command "LATITUDE20°55'23.23''N".  Press F1 for help.
  5. Unknown command "LONGITUDE71°31'26.21''E".  Press F1 for help.

 
Lisp程序有什么错误吗
块1.dwg
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:12:40 | 显示全部楼层
似乎您在代码(测试)中使用的块不包含两个预期属性-如果您不知道如何创建它们,请查看本教程。或者将ATTREQ系统变量设置为0而不是1。
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 08:22:51 | 显示全部楼层
谢谢Msasu
 
那个教程帮助我学到了很多新东西。现在,我已经创建了新的属性块,但仍然显示与lisp相同的错误。
块1.dwg
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:28:22 | 显示全部楼层
似乎您没有修复ATTREQ系统变量的状态-在您附加的示例图形中,该值设置为0。因此,当通过AutoLISP插入块时,解释器不期望属性值。将所述变量设置为1,它应按预期工作。
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 08:34:24 | 显示全部楼层
我已经按照你说的去了,现在工作很顺利
 
非常感谢Msasu和BIGAL
 
但我还需要一件事,无论我在哪里放置挡块,它都应该是最近的舍入位置
i、 e.如果我把它放在762474.59432315668.1052,它将给出纬度-77°31'25.01''e和经度-20°55'22.05''N
但我想把它放在北纬77°31'25.00''E和经度20°55'22.00''N的位置
表示我将到达的最近位置。00十进制
 
有什么办法可以做到吗
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:39:07 | 显示全部楼层
你可以用舍入误差玩一个简单的例子,将一个数字乘以100,取整数,然后再除以100,最后2个数字。对于lats和long,需要一些实验,否则只需要在字符串答案中切掉秒,但你们会凑齐吗?
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-6 08:43:32 | 显示全部楼层
作为新手,我真的不知道如何编辑这些代码,你能给我演示一下吗
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 21:43 , Processed in 0.396586 second(s), 72 queries .

© 2020-2025 乐筑天下

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