请教高手求中点问题
本帖最后由 作者 于 2009-2-13 11:58:56 编辑 <br /><br /> <p>有首尾相接的四条直线L1、L2、L3、L4;如何求L1与L3、L2与L4的中点,目的:在屏幕显示L1与L3、L2与L4的距离。</p><p></p><p> </p><p>就像距形一样,我要长和宽。</p> 楼主说的不清楚啊。什么叫求2条线的中点啊?是指2条线的中点连线吗?就算是2条线的中点连线也不是2条线的距离啊。 <p>2楼说的没错,我是要中点连线的长度。</p> 如果是要线的中点的话 直接知道4个交点就可以了啊。4条线头尾相交 就有4个交点。如果2点分别为(X1,Y1)(X2,Y2)那么中点就是((X1+X1)/2,(Y1+Y2)/2). <p>求L1与L3、L2与L4的中点 </p><p>在屏幕显示L1与L3、L2与L4的距离。 </p><p></p><p>表达不清</p> <p>中点按坐标算就行了 2线的距离。。。哥们上过中学的都该知道 平面内不平行的话 2线的距离就是0</p> 楼主还是用个好一点的图,表达好一点,看得我一头雾水 本帖最后由 作者 于 2009-2-14 8:42:06 编辑第一种情况是我想要的,但往往因为绘图的顺序问题会有第二种情况出现,有什么解决办法?(defun c:temp()
(setq ss(ssget))
(setq len (sslength ss))
(if (< len 4)(progn(alert "只能选4条线!")(exit())))
(if (> len 4)(progn(alert "只能选4条线!")(exit())))
(setq ent1 (ssname ss 0)
ent2 (ssname ss 1)
ent3 (ssname ss 2)
ent4 (ssname ss 3))
(setq dxf1 (entget ent1)
dxf2 (entget ent2)
dxf3 (entget ent3)
dxf4 (entget ent4))
(setq qidian1 (cdr (assoc 10 dxf1))
qidian2 (cdr (assoc 10 dxf2))
qidian3 (cdr (assoc 10 dxf3))
qidian4 (cdr (assoc 10 dxf4))
duandian1 (cdr (assoc 11 dxf1))
duandian2 (cdr (assoc 11 dxf2))
duandian3 (cdr (assoc 11 dxf3))
duandian4 (cdr (assoc 11 dxf4)))
(setq mp1 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian1 duandian1)
mp2 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian2 duandian2)
mp3 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian3 duandian3)
mp4 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) qidian4 duandian4))
(command "line" mp1 mp3 "")
(command "line" mp2 mp4 ""))
<p>分2个程序就是了。弄个DCL 在开始时先选择第一还是第二种情况。然后按照选择进入对应的程序。</p> <p>或者不用DCL 在程序里直接写。</p><p>(defun c:temp()</p><p>(setq qingkuang(getint:"请选择情况类型:(1/2)"))</p><p>(if (= qingkuang 1)(goto1)(goto2))</p><p>)</p><p>(defun goto1()</p><p>第一种情况程序</p><p>)</p><p>(defun goto2()</p><p>第二种情况程序</p><p>)</p>
页:
[1]
2