yiqizouu 发表于 2008-5-19 17:24:00

请教高手图形坐标转换的问题

我想做个图形坐标转换的程序(vba),想提取图形中的所有的点坐标,然后用新坐标替换,那为高手能指教一下,遍历图形中的每一个点,怎么遍历?我所说的点包括线状地物上的拐点等等

yiqizouu 发表于 2008-5-20 11:17:00

<p>怎么没人回答呢?</p>

autocadvba 发表于 2008-7-6 12:51:00

<p>我也在搞坐标转换的问题,多多交流qq375564896</p>

laoxie_198 发表于 2008-7-19 20:43:00

<p>现要知道转换参数才行的。我用lisp弄了一个很简单的</p><p>(defun c:zh();将54系转换为苏州独立坐标系</p><p>&nbsp; ;(startapp&nbsp; "e:/zbzh.exe")<br/>&nbsp; ;(command "delay" 10000);延迟时间<br/>&nbsp; ;(setq cswj "e:/cswj.txt")&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp; ;(setq fp3 (open cswj "r"))<br/>&nbsp; ;(setq jd (atof (read-line fp3)))<br/>&nbsp; ;(setq x0 (atof (read-line fp3)))<br/>&nbsp; ;(setq y0 (atof (read-line fp3)))<br/>&nbsp; ;(close fp3)<br/>&nbsp; (setq jd 旋转角度)<br/>&nbsp; (setq jd (* jd 0.017453292))<br/>&nbsp; (setq y0 Y方向平移)<br/>&nbsp; (setq x0 X方向平移)<br/>&nbsp; (setq cs (cos&nbsp; jd ))<br/>&nbsp; (setq si (sin&nbsp; jd ))<br/>&nbsp; (setq kkk 0.999973920009)<br/>&nbsp; (setq a1 (ssget "X"))<br/>&nbsp; (setq shumu (sslength a1))<br/>&nbsp; (setq j 0)<br/>&nbsp; (setq tj 0)<br/>&nbsp; (repeat shumu<br/>&nbsp;&nbsp;&nbsp; (setq a2 (ssname a1 j))<br/>&nbsp;&nbsp;&nbsp; (setq a (entget a2))<br/>&nbsp;&nbsp;&nbsp; (setq n (length a ))<br/>&nbsp;&nbsp;&nbsp; (setq kk 0)<br/>&nbsp;&nbsp;&nbsp; (repeat n<br/>&nbsp;&nbsp;&nbsp; (setq m (nth kk a))<br/>&nbsp;&nbsp;&nbsp; (if (= (car m) 10)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tj (+ tj 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (cdr m))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y11 (car p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x11 (cadr p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq x1 (- (+ x0 (* k ( * x11&nbsp; cs))) (* y11&nbsp; si)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq y1 (+ (+ y0 ( * x11&nbsp; si)) (* y11&nbsp; cs)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x1 (- (+ x0 (* kkk (* x11&nbsp; cs))) (* kkk (* y11&nbsp; si))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y1 (+ (+ y0 (* kkk (* x11&nbsp; si))) (* kkk (* y11&nbsp; cs))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (list&nbsp; y1 x1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b1 (nth kk a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b2 (cons 10 p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq a (subst b2 b1 a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod a)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= (car m) 11)<br/>&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp; (setq tj (+ tj 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (cdr m))<br/>&nbsp;&nbsp;&nbsp; (setq y11 (car p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x11 (cadr p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x1 (- (+ x0 (* kkk( * x11&nbsp; cs))) (* kkk (* y11&nbsp; si))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y1 (+ (+ y0 (* kkk( * x11&nbsp; si))) (* kkk (* y11&nbsp; cs))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (list&nbsp; y1 x1))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b1 (nth kk a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b2 (cons 11 p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq a (subst b2 b1 a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod a) <br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq kk (+ kk 1))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;一个实体计算完毕,开始下一个循环。<br/>&nbsp;&nbsp;&nbsp; (setq j (+ j 1))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (princ)<br/>&nbsp; )</p>
页: [1]
查看完整版本: 请教高手图形坐标转换的问题