6771 lines
132 KiB
C++
6771 lines
132 KiB
C++
// (C) Copyright 1996 by Autodesk, Inc.
|
|
#include "stdafx.h"
|
|
#include <windows.h>
|
|
#include <string.h>
|
|
#include <adslib.h>
|
|
#include <dbjig.h>
|
|
#include <dbents.h>
|
|
#include <aced.h>
|
|
#include <geassign.h>
|
|
#include <acgi.h>
|
|
#include <math.h>
|
|
#include <rxregsvc.h>
|
|
#include "actrans.h"
|
|
// 主要问题:
|
|
// 1. 墙层有多个, 层名不固定
|
|
// 2. 轴线层名称不固定
|
|
|
|
static BOOL g_nProcessMore=FALSE;
|
|
|
|
void tch0(double nVal);
|
|
|
|
static void diatzh(void);
|
|
static void diatzha(void);
|
|
|
|
static void xuwall(void);
|
|
static void tzha(void);
|
|
static void strlin(void);
|
|
static void ul112l(ads_real x01,ads_real y01,ads_real x02,ads_real y02,ads_real b0);
|
|
static void ssdelenpp0(void);
|
|
static void qmmm(int itdo);
|
|
|
|
static void tchmtxt(TCHAR txtins[40]);
|
|
static void ulin0(void);
|
|
static void ulmend2(void);
|
|
static void ulin2(ads_real xmen2,ads_real ymen2);
|
|
static void ulin3(void);
|
|
static void ulin3a(ads_real x0,ads_real y0);
|
|
static void ulin3dl(void);
|
|
static void ulin4(void);
|
|
static void ulin4a(void);
|
|
static void ulin4b(void);
|
|
static void ulin4ab(void);
|
|
static void ulin5(void);
|
|
static void ulin5a(int i0);
|
|
static void ulin0dd(int i0);
|
|
static void ulin0dda(void);
|
|
|
|
static void uldote(ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2);
|
|
static void wlinTDOTE(ads_point p1,ads_point p2);
|
|
static void tzhb(void);
|
|
static void qmmma(void);
|
|
|
|
static void ulendd(void);
|
|
static void uldda(int it0);
|
|
static void ulddb(int it0,ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2);
|
|
static void ulddc(int it0,ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2);
|
|
static void ulwa00(void);
|
|
static void ularc(void);
|
|
static void strarcd(void);
|
|
static void strarcda(void);
|
|
static void qyxpoint(void);
|
|
static void ularc3(void);
|
|
static void ularc3a(ads_real x0,ads_real y0);
|
|
static void ularc4(int i0);
|
|
static void ularcdote(void);
|
|
static void warc(ads_point p1,ads_real q1,ads_real q2,ads_real rr);
|
|
static void qlajd(void);
|
|
static void ulddarc(int it0);
|
|
static void ulddarcc(int it0);
|
|
static void ulenddzf(void);
|
|
static void ulinzf(void);
|
|
static void ularczf(void);
|
|
static void timekey2(void);
|
|
static void rucs(void);
|
|
static void gworld(void);
|
|
static void ulmcdg(void);
|
|
static void addentd(void);
|
|
static void tzhatd(void);
|
|
static void tzhatdc(void);
|
|
static void wlinTDWA(ads_real x1,ads_real y1,ads_real x2,ads_real y2);
|
|
static void warcTDWA(ads_real x1,ads_real y1,ads_real q1,ads_real q2,ads_real rr);
|
|
static void ulin6dd(void);
|
|
static void xwbmin(int i);
|
|
static void ulin01(void);
|
|
static void yyyq(void);
|
|
static void yyyqa(void);
|
|
static void yyyqb(void);
|
|
static void ulyyyqb(void);
|
|
static void ulrrxxyy(ads_real x01,ads_real y01,ads_real x02,ads_real y02,ads_real tchyy,ads_real dm);
|
|
|
|
|
|
static ads_real whou=500.0,wwjul=0.0;
|
|
static ads_real pi314=3.141592653589793;
|
|
static ads_real ds111=1.0,dswa500=500.0;
|
|
static ads_real jsjdu=0.001;
|
|
static ads_real whouz,whouy;
|
|
static ads_real xdot,ydot;
|
|
static ads_real qucs=0.0,dsdote=0.0;
|
|
static ads_real xx0,yy0,mmrr;
|
|
|
|
|
|
static int itch=0;
|
|
static int iul112l=0;
|
|
static int itwall=0;
|
|
static int icdp3=0,inntm=0,icolo=1,itmen=0;
|
|
static int iarry=1;
|
|
static int ientd=0,itdote=0;
|
|
|
|
static ads_real xka1,yka1,xka2,yka2,karr,kaq1,kaq2;
|
|
static ads_real xwb1,ywb1,xwb2,ywb2;
|
|
static ads_real xdo1,ydo1,xdo2,ydo2,xdz1,ydz1,xdz2,ydz2;
|
|
static ads_real dm,xmen0,ymen0,xmen1,ymen1,xmen2,ymen2;
|
|
static ads_real mank,manam,qhcjcou;
|
|
static ads_real qhcjc;
|
|
static ads_real timekey1=0.0,timekey0;
|
|
static ads_point porg;
|
|
|
|
static ads_real arry[302][8];
|
|
static ads_real ddar[4][8];
|
|
static ads_real arrysa[18][8];
|
|
|
|
static ads_name ensspp;
|
|
static ads_name ensspp0;
|
|
static ads_name endd0;
|
|
static ads_name entdwa;
|
|
static ads_name entch;
|
|
|
|
//static char htbuf[256]=_T("");
|
|
//static char zflay[80]=_T("");
|
|
//static char zfsy[80]=_T("");
|
|
|
|
|
|
// 计算直线的角度(以角度衡量)
|
|
void qjadu(ads_real xx1,ads_real yy1,ads_real xx2,ads_real yy2)
|
|
{
|
|
ads_point p1,p2;
|
|
p1[0]=xx1; p1[1]=yy1; p1[2]=0;
|
|
p2[0]=xx2; p2[1]=yy2; p2[2]=0;
|
|
|
|
qhcjc=0;
|
|
qhcjc=ads_angle(p1,p2);
|
|
qhcjc=qhcjc*180/pi314;
|
|
|
|
}
|
|
|
|
void hlin(ads_real x1,ads_real y1,ads_real x2,ads_real y2,int i)
|
|
{
|
|
ads_point p01,p02;
|
|
p01[0]=x1; p01[1]=y1; p01[2]=0;
|
|
p02[0]=x2; p02[1]=y2; p02[2]=0;
|
|
ads_grdraw(p01,p02,i,0);
|
|
}
|
|
|
|
// 屏幕缩放
|
|
void ul112l(ads_real x01,ads_real y01,ads_real x02,ads_real y02,ads_real b0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
|
|
class LineDupEntry: public XLine{
|
|
public:
|
|
Entity m_ent;
|
|
char m_bDel;
|
|
public:
|
|
LineDupEntry(Entity &e): XLine(e), m_ent(e), m_bDel(0){}
|
|
int IsDeleted() { return m_bDel; }
|
|
int operator !() { return (GetLength()<_DIST_SNAP); }
|
|
};
|
|
|
|
|
|
static void ProcessLineDup()
|
|
{ /* module 1.1.3 */
|
|
|
|
PickSet ssAll(SS_FREE);
|
|
if (ssAll.Get(_T("X"), NULL, NULL, RBList(RTDXF0, _T("LINE"), 8, _T("TDOTE"), NULL))!=RTNORM)
|
|
return;
|
|
|
|
int len = (int)ssAll.Length();
|
|
DList<LineDupEntry> lstLines;
|
|
for(int i=0; i<len; i++) {
|
|
Entity ent = ssAll[(long)i];
|
|
LineDupEntry *pLine=new LineDupEntry(ent);
|
|
if (!(*pLine)) {
|
|
ent.Delete();
|
|
delete pLine;
|
|
} else
|
|
lstLines.Append(pLine);
|
|
}
|
|
|
|
len = lstLines.Length();
|
|
for(i=0; i<len; i++) {
|
|
LineDupEntry &line1 = *lstLines[i];
|
|
if (line1.IsDeleted()) continue;
|
|
for(int j=0; j<len; j++) { // origenal is from 0;
|
|
LineDupEntry &line2 = *lstLines[j];
|
|
if (j==i) continue;
|
|
if (line2.IsDeleted()) continue; // has been del
|
|
|
|
XVector3D vt1=line1.StartPoint()-line1.EndPoint(),
|
|
vt2=line2.StartPoint()-line2.EndPoint();
|
|
ads_real len1=vt1.Length(),
|
|
len2=vt2.Length();
|
|
if (len1) vt1.Scale(1.0/len1);
|
|
if (len2) vt2.Scale(1.0/len2);
|
|
double nSweepAng=acos(vt1&vt2);
|
|
if (nSweepAng<_angSnap || fabs(PI-nSweepAng)<_angSnap) { // same direction, 旧的算法没有考虑夹角精度
|
|
int flg=(line2.StartPoint()&line1);
|
|
int flg1=(line2.EndPoint()&line1);
|
|
if ((flg==PR_ONPT1 && flg1==PR_ONPT2) ||
|
|
(flg==PR_ONPT2 && flg1==PR_ONPT1)) {
|
|
line2.m_bDel=TRUE;
|
|
} else if (flg==PR_INSIDE) { /* p3 within line1*/
|
|
line2.m_bDel=TRUE;
|
|
XPoint ptOnLine1;
|
|
line2.EndPoint().Project(&line1, ptOnLine1);
|
|
if ((ptOnLine1&line1)==PR_EXTEND) { /* p4 on extension line1 */
|
|
if (ads_distance(line1.StartPoint(), line2.EndPoint())<
|
|
ads_distance(line1.EndPoint(), line2.EndPoint()))
|
|
line1.StartPoint() = line2.EndPoint();
|
|
else line1.EndPoint() = line2.EndPoint();
|
|
}
|
|
} else if (flg1==PR_INSIDE) {
|
|
// line2(EndPoint()) is partial inside line1
|
|
line2.m_bDel=TRUE;
|
|
XPoint ptOnLine1;
|
|
line2.StartPoint().Project(&line1, ptOnLine1);
|
|
|
|
if ((ptOnLine1&line1)==PR_EXTEND) {
|
|
if (ads_distance(line1.StartPoint(),line2.StartPoint())<
|
|
ads_distance(line1.EndPoint(),line2.StartPoint()))
|
|
line1.StartPoint() = line2.StartPoint();
|
|
else line1.EndPoint() = line2.StartPoint();
|
|
}
|
|
} else if ((line1.StartPoint()&line2)==PR_INSIDE &&
|
|
(line1.EndPoint()&line2)==PR_INSIDE) { //line1 is inside line2
|
|
line1.StartPoint()=line2.StartPoint(); // replace line1
|
|
line1.EndPoint()=line2.EndPoint();
|
|
Exchange(line1.m_ent, line2.m_ent);
|
|
line2.m_bDel=TRUE;
|
|
}
|
|
|
|
}
|
|
|
|
} /* end for j */
|
|
|
|
} /* end for i */
|
|
|
|
for(i=0; i<len; i++) {
|
|
LineDupEntry &ln=*lstLines[i];
|
|
if (ln.IsDeleted()) {
|
|
//ssAll -= ln.m_ent;
|
|
ln.m_ent.Delete();
|
|
} else {
|
|
ln.Modify(&ln.m_ent);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void tch0(double nVal)
|
|
{
|
|
TCHAR *appname=_T("TDOTE");
|
|
ads_regapp(appname);
|
|
|
|
whou=nVal+0.001;
|
|
dswa500=whou;
|
|
|
|
arxAssureLayer(_T("TDOTE"), LAYSTAT_THAW|LAYSTAT_ON|LAYSTAT_UNLOCK);
|
|
arxAssureLayer(_T("TDWALL"), LAYSTAT_THAW|LAYSTAT_ON|LAYSTAT_UNLOCK);
|
|
applyCurDwgLayerTableChanges();
|
|
//ads_getstring(0, _T("\nPause:"), XString());
|
|
ddar[1][5]=0;
|
|
ddar[2][5]=0;
|
|
|
|
xuwall();
|
|
|
|
ProcessLineDup();
|
|
}
|
|
|
|
|
|
|
|
void xuwall(void)
|
|
{
|
|
struct resbuf *rb;
|
|
int rc;
|
|
Adesk::Int32 len;
|
|
|
|
//modifed by whl on 060323
|
|
//rb=ads_buildlist(RTDXF0,_T("LINE,ARC"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
rb=ads_buildlist(RTDXF0,_T("LINE,ARC"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
rc = ads_ssget(_T("X"),NULL,NULL,rb,ensspp);
|
|
ads_relrb(rb);
|
|
|
|
if (rc!=RTNORM)
|
|
return;
|
|
|
|
rc=ads_sslength(ensspp, &len);
|
|
if (rc!=RTNORM) {
|
|
ads_printf(_T("\n不能建立选择."));
|
|
ads_ssfree(ensspp);
|
|
return;
|
|
}
|
|
|
|
|
|
PickSet ssWall(ensspp);
|
|
XPoint pt1, pt2;
|
|
ssWall.GetExtend(pt1, pt2);
|
|
AssureOnScreen(pt1, pt2);
|
|
|
|
icolo=1;
|
|
|
|
ads_ssadd(NULL,NULL,endd0); //中线
|
|
ads_ssadd(NULL,NULL,entdwa); // 已转化的墙线
|
|
|
|
ientd=0;
|
|
|
|
// 首先转换>WHOU 直线和圆弧线
|
|
tzha();
|
|
|
|
// 再转换<WHOU 直线墙线
|
|
tzhb();
|
|
|
|
ientd=1;
|
|
|
|
|
|
// 延伸 TDOTE 线
|
|
actrTransactionManager->flushGraphics();
|
|
//ads_getstring(0,_T("\nPause"), XString());
|
|
ulendd();
|
|
|
|
// 消除重复 TDOTE 线
|
|
//ulenddzf();
|
|
|
|
// 已转换的墙线放到TDWALL 层上
|
|
tzhatdc();
|
|
|
|
ads_ssfree(entdwa);
|
|
ads_ssfree(endd0);
|
|
ads_ssfree(ensspp);
|
|
}
|
|
|
|
|
|
// ensspp0 -- 一段墙的选择集
|
|
void addentd(void)
|
|
{ Adesk::Int32 len,i;
|
|
ads_name en;
|
|
|
|
// TCHAR zf[40];
|
|
|
|
if (ads_sslength(ensspp0,&len)==RTNORM) goto cc0;
|
|
return;
|
|
|
|
cc0:if (len==0) return;
|
|
|
|
i=0;
|
|
bbb:ads_ssname(ensspp0,i,en);
|
|
|
|
|
|
ads_ssadd(en,entdwa,entdwa);
|
|
|
|
i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
// 从总的选择集中扣除一段墙的选择集
|
|
void ssdelenpp0(void)
|
|
{
|
|
Adesk::Int32 len,i;
|
|
ads_name en;
|
|
|
|
|
|
if (ads_sslength(ensspp0,&len)==RTNORM) goto cc0;
|
|
return;
|
|
|
|
cc0:if (len==0) return;
|
|
|
|
i=0;
|
|
bbb:ads_ssname(ensspp0,i,en);
|
|
|
|
ads_ssdel(en,ensspp);
|
|
|
|
i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
|
|
// 没有考虑图层的不同
|
|
void strlin(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi,itn,itdo,it1,it2;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real xjc1,yjc1,x1,y1,x2,y2,q,dx,dy,d1,d2,dm;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
itn=0;
|
|
|
|
sta0:itn=itn+1;
|
|
|
|
if (itn>300) return;
|
|
|
|
// p1[0]=xka1; p1[1]=yka1;
|
|
// p2[0]=xka2; p2[1]=yka2;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
p1[0]=xka1+cos(q);
|
|
p1[1]=yka1+sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=xka2+cos(q);
|
|
p2[1]=yka2+sin(q);
|
|
|
|
itdo=0;
|
|
|
|
p01[0]=xka1-10*ds111; p01[1]=yka1-10*ds111; p01[2]=0;
|
|
p02[0]=xka1+10*ds111; p02[1]=yka1+10*ds111; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02, mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//判断图层
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L')))
|
|
// goto bbwa;
|
|
|
|
/// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
// lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
dm=d1;
|
|
|
|
d1=800;
|
|
d2=1600;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x1+800*cos(q);
|
|
p4[1]=y1+800*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x1+800*cos(q);
|
|
p3[1]=y1+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x1; dy=pp[1]-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
}
|
|
|
|
it1=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) it1=1;
|
|
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x2+800*cos(q);
|
|
p4[1]=y2+800*sin(q);
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x2+800*cos(q);
|
|
p3[1]=y2+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x2; dy=pp[1]-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
}
|
|
|
|
it2=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) it2=1;
|
|
|
|
if ((d1<ds111)&&(d2<ds111)) {
|
|
|
|
if ((it1==0)&&(it2==0)) goto mbb1;
|
|
|
|
dx=xka1-x1; dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xka1-x2; dy=yka1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
xjc1=x2; yjc1=y2;
|
|
if (d2<d1) { xjc1=x1; yjc1=y1; }
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
x1=xka1+80*cos(q);
|
|
y1=yka1+80*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
x2=xka1+80*cos(q);
|
|
y2=yka1+80*sin(q);
|
|
|
|
dx=x1-xjc1; dy=y1-yjc1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x2-xjc1; dy=y2-yjc1;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d2<d1) goto mbb1;
|
|
|
|
xka1=xjc1; yka1=yjc1;
|
|
|
|
ads_ssadd(en,ensspp0,ensspp0);
|
|
ads_ssfree(ss1);
|
|
|
|
goto sta0; }
|
|
|
|
|
|
if ((d1<ds111)&&(d2>10*ds111)&&(dm<dswa500)||(d1<ds111)&&(d2>10*ds111)&&(dm<=whou)) {
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
itdo=1;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
goto mbb1; }
|
|
|
|
|
|
if ((d1>10*ds111)&&(d2<ds111)&&(dm<dswa500)||(d1>10*ds111)&&(d2<ds111)&&(dm<=whou)) {
|
|
|
|
xdo1=x2; ydo1=y2;
|
|
xdo2=x1; ydo2=y1;
|
|
|
|
itdo=1;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
goto mbb1; }
|
|
|
|
|
|
if ((d1<ds111)&&(d2>10*ds111)&&(dm>dswa500)||(d1<ds111)&&(d2>10*ds111)&&(dm>whou)) {
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
itdo=2;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
goto mbb1; }
|
|
|
|
|
|
if ((d1>10*ds111)&&(d2<ds111)&&(dm>dswa500)||(d1>10*ds111)&&(d2<ds111)&&(dm>whou)) {
|
|
|
|
xdo1=x2; ydo1=y2;
|
|
xdo2=x1; ydo2=y1;
|
|
|
|
itdo=2;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
goto mbb1; }
|
|
|
|
|
|
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (itdo==0) {
|
|
|
|
return; }
|
|
|
|
icdp3=0;
|
|
qmmm(itdo);
|
|
if (icdp3==1) goto sta0;
|
|
|
|
|
|
}
|
|
|
|
|
|
void qmmm(int itdo)
|
|
{
|
|
struct resbuf apps,*ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,gs1,gs2,gs3,dhh;
|
|
ads_real r41,r42,q1,bs,q,xjc1,yjc1,xjc2,yjc2;
|
|
|
|
ads_point p01,p02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),txtins[40]=_T(""),buf[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
// ads_printf(_T("mmmm"));
|
|
// xb1=xdo1; yb1=ydo1;
|
|
// xb2=xdo2; yb2=ydo2;
|
|
|
|
x1=xdo1; x2=xdo2;
|
|
if (x2<x1) { x1=xdo2; x2=xdo1;}
|
|
|
|
y1=ydo1; y2=ydo2;
|
|
if (y2<y1) { y1=ydo2; y2=ydo1; }
|
|
|
|
dx=100*ds111;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x2+dx; p02[1]=y2+dx; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
// 搜索门窗
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("INSERT"), 8, LAY_WIN, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WINDOW,")<<LAY_WIN;
|
|
RBList mask(RTDXF0, _T("INSERT"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("WTHICK"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
it=0; gs1=0; gs2=0; gs3=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
if (typi==2) _tcscpy(txtins,rb->resval.rstring);
|
|
if (typi==41) r41=rb->resval.rreal;
|
|
if (typi==42) r42=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
if (it==3) gs3=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if (_tcsicmp(txtnam8, LAY_WINDOW)==0) goto bbwa;
|
|
// goto mbb1;
|
|
|
|
//bbwa: if (_tcsicmp(txtdxf0, _T("INSERT"))==0) goto bbin;
|
|
// goto mbb1;
|
|
|
|
//bbin:
|
|
mank=0; inntm=0; manam=0;
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f,gs3=%f"),gs1,gs2,gs3);
|
|
if (gs1<=0) gs1=400;
|
|
|
|
if (mank==0) tchmtxt(txtins);
|
|
|
|
bs=r41;
|
|
if (bs<0) bs=-bs;
|
|
mank=bs*mank;
|
|
|
|
if (mank>10*ds111) {
|
|
|
|
p3[0]=x1; p3[1]=y1; p3[2]=0;
|
|
|
|
qhcjc=q1*180/pi314;
|
|
if (r41<0) qhcjc=qhcjc+180;
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
|
|
dx=ds111+mank/2;
|
|
|
|
p3[0]=x1+dx*cos(q);
|
|
p3[1]=y1+dx*sin(q);
|
|
p3[2]=0;
|
|
|
|
q=qhcjc*pi314/180;
|
|
p4[0]=x1+dx*cos(q);
|
|
p4[1]=y1+dx*sin(q);
|
|
p4[2]=0;
|
|
|
|
xdz1=p3[0]; ydz1=p3[1];
|
|
xdz2=p4[0]; ydz2=p4[1];
|
|
|
|
dx=mank/2;
|
|
x2=x1+dx*cos(q);
|
|
y2=y1+dx*sin(q);
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
x1=x1+dx*cos(q);
|
|
y1=y1+dx*sin(q);
|
|
|
|
p1[0]=xdo1; p1[1]=ydo1; p1[2]=0;
|
|
p2[0]=xdo2; p2[1]=ydo2; p2[2]=0;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto qjdmm;
|
|
goto mbb1;
|
|
|
|
qjdmm:dx=xdo1-xdo2; dy=ydo1-ydo2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dhh=d1;
|
|
if ((dhh>400)&&(dhh>whou)) dhh=whou;
|
|
|
|
dx=pp[0]-xka1; dy=pp[1]-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>dhh) goto mbb1;
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
d1=800;
|
|
d2=1600;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x1+800*cos(q);
|
|
p4[1]=y1+800*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x1+800*cos(q);
|
|
p3[1]=y1+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x1; dy=pp[1]-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
xjc1=pp[0]; yjc1=pp[1];
|
|
}
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x2+800*cos(q);
|
|
p4[1]=y2+800*sin(q);
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x2+800*cos(q);
|
|
p3[1]=y2+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x2; dy=pp[1]-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
xjc2=pp[0]; yjc2=pp[1];
|
|
}
|
|
|
|
|
|
if ((d1<dhh)&&(d2<dhh)) {
|
|
|
|
dx=fabs(d1-d2);
|
|
if (dx>ds111) goto mbb1;
|
|
|
|
dx=xka1-x1; dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xka1-x2; dy=yka1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
// ads_printf(_T("\nxjc1=%f,yjc1=%f,xjc2=%f,yjc2=%f"),xjc1,yjc1,xjc2,yjc2);
|
|
|
|
if (d2>d1) { xjc1=xjc2; yjc1=yjc2; }
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
x1=xka1+80*cos(q); y1=yka1+80*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
x2=xka1+80*cos(q); y2=yka1+80*sin(q);
|
|
|
|
dx=x1-xjc1; dy=y1-yjc1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x2-xjc1; dy=y2-yjc1;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d2<d1) goto mbb1;
|
|
|
|
xka1=xjc1; yka1=yjc1;
|
|
icdp3=1;
|
|
|
|
// if (itdo==1) ads_ssadd(entch,ensspp0,ensspp0);
|
|
|
|
if (itdo==2) {
|
|
qjadu(xdo1,ydo1,xdo2,ydo2);
|
|
q=qhcjc*pi314/180;
|
|
xdo2=xdo1+gs1*cos(q);
|
|
ydo2=ydo1+gs1*sin(q);
|
|
}
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
ulmend2();
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto strbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
void ulmend2(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi,img;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,q1,dq,ds0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
// hlin(xka1,yka1,xka2,yka2,5);
|
|
// ads_getstring(5,NULL,txtdxf0);
|
|
|
|
img=0;
|
|
|
|
dx=xka1-xdz1; dy=yka1-ydz1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xka1-xdz2; dy=yka1-ydz2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1>d2) {
|
|
dx=xdz2; xdz2=xdz1; xdz1=dx;
|
|
dx=ydz2; ydz2=ydz1; ydz1=dx; }
|
|
|
|
dx=xdo1-xdo2; dy=ydo1-ydo2;
|
|
ds0=sqrt(dx*dx+dy*dy);
|
|
|
|
p01[0]=xdz1-10; p01[1]=ydz1-10; p01[2]=0;
|
|
p02[0]=xdz1+10; p02[1]=ydz1+10; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8,(const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// 墙层
|
|
// if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:
|
|
//if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
dx=fabs(ds0-d1);
|
|
if (dx>0.5*ds0) goto mbb1;
|
|
|
|
dm=dx;
|
|
|
|
p1[0]=xdz1; p1[1]=ydz1;
|
|
p2[0]=xdz2; p2[1]=ydz2;
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
q1=qhcjc;
|
|
|
|
qjadu(p3[0],p3[1],p4[0],p4[1]);
|
|
dq=q1-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>269) { dq=dq-180; goto qq1; }
|
|
if ((dq<85)||(dq>95)) goto mbb1;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
|
|
// hlin(x1,y1,x2,y2,7);
|
|
// hlin(xdo1,ydo1,xdo2,ydo2,5);
|
|
|
|
if (dm<ds111) {
|
|
|
|
dx=xka1-x1; dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xka1-x2; dy=yka1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1>d2) {
|
|
dx=x2; x2=x1; x1=dx;
|
|
dx=y2; y2=y1; y1=dx; }
|
|
|
|
if (itmen==0) {
|
|
xmen1=x1; ymen1=x2;
|
|
xmen2=x2; ymen2=y2;
|
|
xmen0=xdo2; ymen0=ydo2;
|
|
itmen=1; }
|
|
|
|
img=1;
|
|
|
|
}
|
|
|
|
// ads_ssadd(en,ensspp0,ensspp0);
|
|
|
|
goto enss0; }
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto bbb;
|
|
|
|
enss0:ads_ssfree(ss1);
|
|
|
|
if (itmen==0) {
|
|
xmen1=xdo1; ymen1=xdo2;
|
|
xmen2=xdo2; ymen2=ydo2;
|
|
xmen0=xdo2; ymen0=ydo2;
|
|
itmen=1; }
|
|
|
|
if (img==0) ulmcdg();
|
|
|
|
|
|
}
|
|
|
|
|
|
void ulmcdg(void)
|
|
{
|
|
struct resbuf apps,*ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi,it,itn;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,gs1,gs2,gs3,dhh;
|
|
ads_real r41,r42,q1,bs,q,xjc1,yjc1,xjc2,yjc2;
|
|
|
|
ads_real xm1,ym1,xm2,ym2,xd1,yd1,xd2,yd2;
|
|
|
|
|
|
ads_point p01,p02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),txtins[40]=_T(""),buf[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
// hlin(xka1,yka1,xka1+1000,yka1+1000,7);
|
|
// ads_getstring(5,NULL,txtdxf0);
|
|
//if (xka1!=1) return;
|
|
|
|
itn=0;
|
|
|
|
nn0:itn=itn+1;
|
|
if (itn>10) return;
|
|
|
|
qjadu(xka2,yka2,xka1,yka1);
|
|
q=(qhcjc+90)*pi314/180;
|
|
|
|
dx=dswa500;
|
|
if (dx<0.8*whou/2) dx=0.8*whou;
|
|
|
|
xm1=xka1+dx*cos(q);
|
|
ym1=yka1+dx*sin(q);
|
|
|
|
xm2=xka1-dx*cos(q);
|
|
ym2=yka1-dx*sin(q);
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
dx=40;
|
|
xd1=xka1+dx*cos(q);
|
|
yd1=yka1+dx*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
dx=40000.0;
|
|
xd2=xka1+dx*cos(q);
|
|
yd2=yka1+dx*sin(q);
|
|
|
|
x1=xka1; y1=yka1;
|
|
dx=180*ds111;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x1+dx; p02[1]=y1+dx; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("INSERT"), 8, LAY_WIN, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WINDOW,")<<LAY_WIN;
|
|
RBList mask(RTDXF0, _T("INSERT"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("WTHICK"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
it=0; gs1=0; gs2=0; gs3=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
if (typi==2) _tcscpy(txtins,rb->resval.rstring);
|
|
if (typi==41) r41=rb->resval.rreal;
|
|
if (typi==42) r42=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
if (it==3) gs3=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('I'))&&(txtnam8[2]==_T('N'))&&(txtnam8[3]==_T('D'))&&(txtnam8[4]==_T('O'))&&(txtnam8[5]==_T('W'))) goto bbwa;
|
|
// goto mbb1;
|
|
|
|
//bbwa: if ((txtdxf0[0]==_T('I'))&&(txtdxf0[1]==_T('N'))&&(txtdxf0[2]==_T('S'))&&(txtdxf0[3]==_T('E'))&&(txtdxf0[4]==_T('R'))&&(txtdxf0[5]==_T('T'))) goto bbin;
|
|
// goto mbb1;
|
|
|
|
//bbin:
|
|
mank=0; inntm=0; manam=0;
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f,gs3=%f"),gs1,gs2,gs3);
|
|
if (gs1<=0) gs1=400;
|
|
|
|
|
|
|
|
if (mank==0) tchmtxt(txtins);
|
|
|
|
bs=r41;
|
|
if (bs<0) bs=-bs;
|
|
mank=bs*mank;
|
|
|
|
if (mank>10*ds111) {
|
|
|
|
p3[0]=x1; p3[1]=y1; p3[2]=0;
|
|
|
|
qhcjc=q1*180/pi314;
|
|
if (r41<0) qhcjc=qhcjc+180;
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
|
|
dx=20*ds111+mank/2;
|
|
|
|
p3[0]=x1+dx*cos(q);
|
|
p3[1]=y1+dx*sin(q);
|
|
p3[2]=0;
|
|
|
|
q=qhcjc*pi314/180;
|
|
p4[0]=x1+dx*cos(q);
|
|
p4[1]=y1+dx*sin(q);
|
|
p4[2]=0;
|
|
|
|
// xdz1=p3[0]; ydz1=p3[1];
|
|
// xdz2=p4[0]; ydz2=p4[1];
|
|
|
|
dx=mank/2;
|
|
x2=x1+dx*cos(q);
|
|
y2=y1+dx*sin(q);
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
x1=x1+dx*cos(q);
|
|
y1=y1+dx*sin(q);
|
|
|
|
p1[0]=xm1; p1[1]=ym1; p1[2]=0;
|
|
p2[0]=xm2; p2[1]=ym2; p2[2]=0;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto qjdmm;
|
|
goto mbb1;
|
|
|
|
qjdmm:p1[0]=xd1; p1[1]=yd1;
|
|
p2[0]=xd2; p2[1]=yd2;
|
|
|
|
d1=800;
|
|
d2=1600;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x1+800*cos(q);
|
|
p4[1]=y1+800*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x1+800*cos(q);
|
|
p3[1]=y1+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-x1; dy=pp[1]-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
xjc1=pp[0]; yjc1=pp[1];
|
|
goto mm2;
|
|
}
|
|
|
|
goto mbb1;
|
|
|
|
mm2: q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x2+800*cos(q);
|
|
p4[1]=y2+800*sin(q);
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x2+800*cos(q);
|
|
p3[1]=y2+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-x2; dy=pp[1]-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
xjc2=pp[0]; yjc2=pp[1];
|
|
goto mm3;
|
|
}
|
|
|
|
goto mbb1;
|
|
|
|
mm3:dhh=dswa500;
|
|
if (dhh<0.8*whou) dhh=0.8*whou;
|
|
|
|
if ((d1<dhh)&&(d2<dhh)) {
|
|
|
|
dx=fabs(d1-d2);
|
|
if (dx>ds111) goto mbb1;
|
|
|
|
dx=xka1-x1; dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xka1-x2; dy=yka1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
// ads_printf(_T("\nxjc1=%f,yjc1=%f,xjc2=%f,yjc2=%f"),xjc1,yjc1,xjc2,yjc2);
|
|
|
|
if (d2>d1) { xjc1=xjc2; yjc1=yjc2; }
|
|
|
|
xka1=xjc1; yka1=yjc1;
|
|
|
|
icdp3=1;
|
|
|
|
// hlin(xd1,yd1,xd2,yd2,7);
|
|
// hlin(xka1,yka1,xka2,yka2,2);
|
|
// ads_getstring(5,NULL,txtdxf0);
|
|
|
|
ads_ssfree(ss1);
|
|
goto nn0;
|
|
|
|
}
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto strbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void tchmtxt(TCHAR txtins[40])
|
|
{
|
|
// Zyu modify on 100722,支持64位
|
|
//int j,i,ii;
|
|
INT_PTR j,i,ii;
|
|
ads_real mk[14][2];
|
|
|
|
for (i=1;i<12;i++) mk[i][1]=0;
|
|
|
|
ii=0; manam=0;
|
|
j=_tcslen(txtins);
|
|
if (j<1) goto end;
|
|
|
|
mk[1][1]=1; mk[2][1]=1; ii=3; manam=1;
|
|
/*
|
|
if ((j>=4)&&(txtins[0]==_T('_'))&&(txtins[1]==_T('D'))&&(txtins[2]==_T('B'))&&(txtins[3]==_T('L'))&&(txtins[4]==_T('K'))) {
|
|
mk[1][1]=1; mk[2][1]=1; ii=3; manam=1; }
|
|
|
|
if ((j>=4)&&(txtins[0]==_T('_'))&&(txtins[1]==_T('W'))&&(txtins[2]==_T('B'))&&(txtins[3]==_T('L'))&&(txtins[4]==_T('K'))) {
|
|
mk[1][1]=1; mk[2][1]=1; ii=3; manam=1; }
|
|
|
|
if ((j>=4)&&(txtins[0]==_T('_'))&&(txtins[1]==_T('G'))&&(txtins[2]==_T('C'))&&(txtins[3]==_T('B'))&&(txtins[4]==_T('L'))&&(txtins[5]==_T('K'))) {
|
|
mk[1][1]=1; mk[2][1]=1; ii=3; manam=1; }
|
|
|
|
if ((j>=3)&&(txtins[0]==_T('M'))&&(txtins[1]==_T('_'))) {
|
|
mk[1][1]=1; mk[2][1]=1; ii=3; manam=1; }
|
|
*/
|
|
end:mank=mk[2][1];
|
|
|
|
}
|
|
|
|
|
|
void ulin2(ads_real xmen2,ads_real ymen2)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,q1,dq;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
p01[0]=xmen2-10; p01[1]=ymen2-10; p01[2]=0;
|
|
p02[0]=xmen2+10; p02[1]=ymen2+10; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
q1=qhcjc;
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>179) { dq=dq-180; goto qq1; }
|
|
|
|
if (dq<1) {
|
|
itmen=2;
|
|
xka1=x1;
|
|
yka1=y1;
|
|
xka2=x2;
|
|
yka2=y2;
|
|
ads_ssadd(en,ensspp0,ensspp0);
|
|
|
|
goto enss0;
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto bbb;
|
|
|
|
enss0:ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
void ulin3(void)
|
|
{ int i,id;
|
|
ads_real q,dx,dy,d1;
|
|
ads_real dd3[5][3];
|
|
|
|
dx=xka1-xka2;
|
|
dy=yka1-yka2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
dd3[1][1]=(xka1+xka2)/2;
|
|
dd3[1][2]=(yka1+yka2)/2;
|
|
|
|
// id=2;
|
|
// if ((d1<1000)||(d1<2*whou)) goto aa0;
|
|
|
|
q=qhcjc*pi314/180;
|
|
dd3[2][1]=xka1+d1*cos(q)/4;
|
|
dd3[2][2]=yka1+d1*sin(q)/4;
|
|
|
|
dd3[3][1]=xka1+3*d1*cos(q)/4;
|
|
dd3[3][2]=yka1+3*d1*sin(q)/4;
|
|
|
|
id=4;
|
|
|
|
i=1;
|
|
aa1:ulin3a(dd3[i][1],dd3[i][2]);
|
|
|
|
if (itmen==3) return;
|
|
|
|
i=i+1;
|
|
if (i<id) goto aa1;
|
|
|
|
}
|
|
|
|
|
|
void ulin3dl(void)
|
|
{ int i,id;
|
|
ads_real q,dx,dy,d1;
|
|
ads_real dd3[7][3];
|
|
|
|
dx=xka1-xka2;
|
|
dy=yka1-yka2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
dd3[1][1]=(xka1+xka2)/2;
|
|
dd3[1][2]=(yka1+yka2)/2;
|
|
|
|
id=2;
|
|
|
|
if ((d1<1000)||(d1<2*whou)) goto aa0;
|
|
|
|
q=qhcjc*pi314/180;
|
|
dd3[2][1]=xka1+d1*cos(q)/4;
|
|
dd3[2][2]=yka1+d1*sin(q)/4;
|
|
dd3[3][1]=xka1+3*d1*cos(q)/4;
|
|
dd3[3][2]=yka1+3*d1*sin(q)/4;
|
|
|
|
// dx=20;
|
|
// dd3[4][1]=xka1+dx*cos(q);
|
|
// dd3[4][2]=yka1+dx*sin(q);
|
|
|
|
// dd3[5][1]=xka1+(d1-dx)*cos(q);
|
|
// dd3[5][2]=yka1+(d1-dx)*sin(q);
|
|
|
|
id=4;
|
|
|
|
aa0: i=1;
|
|
aa1:ulin3a(dd3[i][1],dd3[i][2]);
|
|
|
|
if (itmen==3) return;
|
|
|
|
i=i+1;
|
|
if (i<id) goto aa1;
|
|
|
|
// i=1;
|
|
// ulin3adl(dd3[i][1],dd3[i][2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ulin3a(ads_real x0,ads_real y0)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en,en3,en1;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_real q0,q,dx,dy,d1,x1,y1,x2,y2,dq;
|
|
|
|
ads_real ds1,ds2;
|
|
ads_real x11,y11,x12,y12,x21,y21,x22,y22;
|
|
|
|
ads_real ds3,ds4;
|
|
ads_real x31,y31,x32,y32,x41,y41,x42,y42;
|
|
|
|
ads_point p1,p2,p3,p4,pp;
|
|
ads_point p01,p02;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
x11=0; y11=0;
|
|
x12=0; y12=0;
|
|
|
|
x31=0; y31=0;
|
|
x32=0; y32=0;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
q0=qhcjc;
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
|
|
dx=2000;
|
|
ds1=2000;
|
|
ds2=2000;
|
|
|
|
p1[0]=x0; p1[1]=y0;
|
|
p2[0]=x0+dx*cos(q); p2[1]=y0+dx*sin(q);
|
|
|
|
p01[0]=p1[0]; p01[1]=p1[1]; p01[2]=0;
|
|
p02[0]=p2[0]; p02[1]=p2[1]; p02[2]=0;
|
|
|
|
ul112l(p1[0],p1[1],p2[0],p2[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto bb1;
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto bb1;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q0-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>179) { dq=dq-180; goto qq1; }
|
|
if (dq>1) goto bb1;
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto lin2;
|
|
goto bb1;
|
|
|
|
lin2:dx=pp[0]-x0; dy=pp[1]-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto bb1;
|
|
|
|
if (d1<ds1) {
|
|
|
|
if (fabs(ds1-2000)>1.0E-6) {
|
|
ds2=ds1;
|
|
x21=x11; y21=y11;
|
|
x22=x12; y22=y12;
|
|
}
|
|
|
|
ds1=d1;
|
|
x11=x1; y11=y1;
|
|
x12=x2; y12=y2;
|
|
ads_name_set(en,en1);
|
|
|
|
goto bb1;
|
|
}
|
|
|
|
if (d1<ds2) {
|
|
ds2=d1;
|
|
x21=x1; y21=y1;
|
|
x22=x2; y22=y2;
|
|
}
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
|
|
q=(q0-90)*pi314/180;
|
|
|
|
dx=2000;
|
|
ds3=2000;
|
|
ds4=2000;
|
|
|
|
p1[0]=x0; p1[1]=y0;
|
|
p2[0]=x0+dx*cos(q); p2[1]=y0+dx*sin(q);
|
|
|
|
p01[0]=p1[0]; p01[1]=p1[1]; p01[2]=0;
|
|
p02[0]=p2[0]; p02[1]=p2[1]; p02[2]=0;
|
|
|
|
ul112l(p1[0],p1[1],p2[0],p2[1],ds111);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto ccc;
|
|
return;
|
|
|
|
ccc:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto cc1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto ccwa;
|
|
|
|
// goto cc1;
|
|
|
|
//ccwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto cclin;
|
|
|
|
// goto cc1;
|
|
|
|
//cclin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto cc1;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q0-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
ccqq1:if (dq>179) { dq=dq-180; goto ccqq1; }
|
|
if (dq>1) goto cc1;
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto cclin2;
|
|
goto cc1;
|
|
|
|
cclin2:dx=pp[0]-x0; dy=pp[1]-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto cc1;
|
|
|
|
if (d1<ds3) {
|
|
|
|
if (fabs(ds3-2000)>1.0E-6) {
|
|
ds4=ds3;
|
|
x41=x31; y41=y31;
|
|
x42=x32; y42=y32;
|
|
}
|
|
|
|
ds3=d1;
|
|
x31=x1; y31=y1;
|
|
x32=x2; y32=y2;
|
|
|
|
ads_name_set(en,en3);
|
|
goto cc1;
|
|
}
|
|
|
|
if (d1<ds4) {
|
|
ds4=d1;
|
|
x41=x1; y41=y1;
|
|
x42=x2; y42=y2;
|
|
}
|
|
|
|
cc1:i=i+1;
|
|
if (i<len) goto ccc;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
// ads_printf(_T("\nds1=%f,ds2=%f,ds3=%f,ds4=%f"),ds1,ds2,ds3,ds4);
|
|
// ads_printf(_T("\nxka1=%f,yka1=%f,xka2=%f,yka2=%f"),xka1,yka1,xka2,yka2);
|
|
|
|
if ((fabs(ds3-2000)<1.0E-6)&&(ds1<dswa500)||(fabs(ds3-2000)<1.0E-6)&&(ds1<=whou)) goto d11;
|
|
if ((fabs(ds1-2000)<1.0E-6)&&(ds3<dswa500)||(fabs(ds1-2000)<1.0E-6)&&(ds3<=whou)) goto d33;
|
|
|
|
|
|
if ((ds1<dswa500)&&(ds3<dswa500)||(ds1<=whou)&&(ds3<=whou)) {
|
|
|
|
if ((fabs(ds2-2000)<1.0E-6)&&(fabs(ds4-2000)<1.0E-6)||(ds2<2000)&&(ds4<2000)) {
|
|
if (ds1<=ds3) goto d11;
|
|
goto d33;
|
|
}
|
|
|
|
if ((fabs(ds2-2000)<1.0E-6)) goto d11;
|
|
if ((fabs(ds4-2000)<1.0E-6)) goto d33;
|
|
}
|
|
|
|
|
|
|
|
if ((ds1<dswa500)&&(ds1<ds3)||(ds1<=whou)&&(ds1<ds3)) goto d11;
|
|
if ((ds3<dswa500)&&(ds3<ds1)||(ds3<=whou)&&(ds3<ds1)) goto d33;
|
|
|
|
return;
|
|
|
|
d11:xka1=x11; yka1=y11;
|
|
xka2=x12; yka2=y12;
|
|
itmen=3;
|
|
ads_ssadd(en1,ensspp0,ensspp0);
|
|
return;
|
|
|
|
d33:xka1=x31; yka1=y31;
|
|
xka2=x32; yka2=y32;
|
|
itmen=3;
|
|
ads_ssadd(en3,ensspp0,ensspp0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void ulin0(void)
|
|
{
|
|
// int i;
|
|
ads_real ds,x1,y1,x2,y2,dx,dy,d1,d2,x0,y0,q;
|
|
// TCHAR zf[40];
|
|
|
|
ads_ssadd(NULL,NULL,ensspp0);
|
|
|
|
ads_ssadd(entch,ensspp0,ensspp0);
|
|
|
|
itmen=0;
|
|
|
|
strlin();
|
|
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
|
|
strlin();
|
|
|
|
x1=xka1; y1=yka1;
|
|
x2=xka2; y2=yka2;
|
|
|
|
// if (ientd==1) ads_printf(_T("\n itmen=%d"),itmen);
|
|
|
|
if (itmen==1) {
|
|
|
|
ulin2(xmen2,ymen2);
|
|
|
|
if (itmen==1) ulin2(xmen0,ymen0);
|
|
|
|
|
|
if (itmen==2) {
|
|
|
|
strlin();
|
|
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
|
|
strlin();
|
|
|
|
// hlin(x1,y1,x2,y2,7);
|
|
// hlin(xka1,yka1,xka2,yka2,7);
|
|
// ads_getstring(5,NULL,zf);
|
|
|
|
goto ssd0;
|
|
}
|
|
|
|
goto ssd;
|
|
|
|
}
|
|
|
|
if (itmen==0) {
|
|
|
|
// hlin(x1,y1,x2,y2,2);
|
|
// TCHAR zf[40];
|
|
// ads_getstring(5,NULL,zf);
|
|
// ads_printf(_T("\nulin3 itmen=%d"),itmen);
|
|
|
|
ulin3();
|
|
|
|
if (itmen==3) {
|
|
|
|
strlin();
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
strlin();
|
|
|
|
// hlin(x1,y1,x2,y2,2);
|
|
// hlin(xka1,yka1,xka2,yka2,3);
|
|
// TCHAR zf[40];
|
|
// ads_getstring(5,NULL,zf);
|
|
|
|
goto ssd0;
|
|
}
|
|
|
|
goto ssd;
|
|
}
|
|
|
|
goto ssd;
|
|
|
|
ssd0:qjadu(x1,y1,x2,y2);
|
|
|
|
dx=800000000.0;
|
|
q=(qhcjc-180)*pi314/180;
|
|
x0=x1+dx*cos(q);
|
|
y0=y1+dx*sin(q);
|
|
|
|
dx=x0-xka1; dy=y0-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x0-xka2; dy=y0-yka2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1>d2) {
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
}
|
|
|
|
arry[1][1]=x1; arry[1][2]=y1;
|
|
arry[1][3]=x2; arry[1][4]=y2;
|
|
arry[1][5]=0; arry[1][6]=0;
|
|
|
|
arry[2][1]=xka1; arry[2][2]=yka1;
|
|
arry[2][3]=xka2; arry[2][4]=yka2;
|
|
arry[2][5]=0; arry[2][6]=0;
|
|
|
|
iarry=3;
|
|
|
|
//ads_printf(_T("\narry[1][1]=%f,arry[1][2]=%f,arry[1][3]=%f,arry[1][4]=%f"),arry[1][1],arry[1][2],arry[1][3],arry[1][4]);
|
|
//ads_printf(_T("\narry[2][1]=%f,arry[2][2]=%f,arry[2][3]=%f,arry[2][4]=%f"),arry[2][1],arry[2][2],arry[2][3],arry[2][4]);
|
|
|
|
ulin4();
|
|
|
|
icolo=icolo+1;
|
|
|
|
// if (ientd==1) {
|
|
// for (i=1;i<iarry;i++) {
|
|
// if (i==1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],2);
|
|
// if (i>1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],7);
|
|
// ads_printf(_T("\ni=%d,arry[i][1]=%f,%f,%f,%f"),i,arry[i][1],arry[i][2],arry[i][3],arry[i][4]);
|
|
// ads_getstring(5,NULL,zf); }
|
|
// }
|
|
// 绘 TDOTE 线
|
|
|
|
ulin5();
|
|
|
|
// 将以转换的墙端点选上 ensspp0
|
|
|
|
ulin6dd();
|
|
|
|
if (ientd==0) addentd();
|
|
|
|
ssd:ssdelenpp0();
|
|
|
|
ads_ssfree(ensspp0);
|
|
|
|
}
|
|
|
|
|
|
void ulin0dda(void)
|
|
{
|
|
// int i;
|
|
ads_real ds,x1,y1,x2,y2,dx,dy,d1,d2,x0,y0,q;
|
|
// TCHAR zf[40];
|
|
|
|
ads_ssadd(NULL,NULL,ensspp0);
|
|
|
|
// ads_ssadd(entch,ensspp0,ensspp0);
|
|
// itmen=0;
|
|
// strlin();
|
|
// ds=xka2; xka2=xka1; xka1=ds;
|
|
// ds=yka2; yka2=yka1; yka1=ds;
|
|
// strlin();
|
|
|
|
x1=xka1; y1=yka1;
|
|
x2=xka2; y2=yka2;
|
|
|
|
// if (ientd==1) ads_printf(_T("\n itmen=%d"),itmen);
|
|
|
|
itmen=0;
|
|
|
|
ulin3dl();
|
|
|
|
//ads_printf(_T("\nulin3 itmen=%d"),itmen);
|
|
|
|
if (itmen==3) {
|
|
|
|
strlin();
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
strlin();
|
|
|
|
// hlin(x1,y1,x2,y2,2);
|
|
// hlin(xka1,yka1,xka2,yka2,2);
|
|
// ads_getstring(5,NULL,zf);
|
|
goto ssd0;
|
|
}
|
|
|
|
|
|
goto ssd;
|
|
|
|
ssd0:qjadu(x1,y1,x2,y2);
|
|
|
|
dx=800000000.0;
|
|
q=(qhcjc-180)*pi314/180;
|
|
x0=x1+dx*cos(q);
|
|
y0=y1+dx*sin(q);
|
|
|
|
dx=x0-xka1; dy=y0-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x0-xka2; dy=y0-yka2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1>d2) {
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
}
|
|
|
|
arry[1][1]=x1; arry[1][2]=y1;
|
|
arry[1][3]=x2; arry[1][4]=y2;
|
|
arry[1][5]=0; arry[1][6]=0;
|
|
|
|
arry[2][1]=xka1; arry[2][2]=yka1;
|
|
arry[2][3]=xka2; arry[2][4]=yka2;
|
|
arry[2][5]=0; arry[2][6]=0;
|
|
|
|
iarry=3;
|
|
|
|
//ads_printf(_T("\narry[1][1]=%f,arry[1][2]=%f,arry[1][3]=%f,arry[1][4]=%f"),arry[1][1],arry[1][2],arry[1][3],arry[1][4]);
|
|
//ads_printf(_T("\narry[2][1]=%f,arry[2][2]=%f,arry[2][3]=%f,arry[2][4]=%f"),arry[2][1],arry[2][2],arry[2][3],arry[2][4]);
|
|
|
|
// ulin4();
|
|
|
|
icolo=icolo+1;
|
|
|
|
// if (ientd==1) {
|
|
// for (i=1;i<iarry;i++) {
|
|
// if (i==1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],2);
|
|
// if (i>1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],7);
|
|
// ads_printf(_T("\ni=%d,arry[i][1]=%f,%f,%f,%f"),i,arry[i][1],arry[i][2],arry[i][3],arry[i][4]);
|
|
// ads_getstring(5,NULL,zf); }
|
|
// }
|
|
// 绘 TDOTE 线
|
|
|
|
ulin5();
|
|
|
|
// 将以转换的墙端点选上 ensspp0
|
|
|
|
ulin6dd();
|
|
|
|
if (ientd==0) addentd();
|
|
|
|
ssd:ssdelenpp0();
|
|
|
|
ads_ssfree(ensspp0);
|
|
|
|
}
|
|
|
|
|
|
void ulin4(void)
|
|
{
|
|
ulin4a();
|
|
|
|
ulin4ab();
|
|
|
|
}
|
|
|
|
void ulin4a(void)
|
|
{ int i;
|
|
ads_real q,dx,dy,d1;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
aa0:p1[0]=arry[1][1]; p1[1]=arry[1][2];
|
|
p2[0]=arry[1][3]; p2[1]=arry[1][4];
|
|
|
|
i=iarry-1;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
q=(qhcjc+90)*pi314/180;
|
|
|
|
dx=8000.0;
|
|
p3[0]=arry[i][3]+dx*cos(q); p3[1]=arry[i][4]+dx*sin(q);
|
|
p4[0]=arry[i][3]-dx*cos(q); p4[1]=arry[i][4]-dx*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto dd1;
|
|
return;
|
|
|
|
dd1:dx=pp[0]-arry[1][3]; dy=pp[1]-arry[1][4];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
// if (d1<10*ds111) return;
|
|
if (d1<dswa500) return;
|
|
|
|
q=qhcjc*pi314/180;
|
|
dx=2*whou;
|
|
if (dx<1000) dx=1000;
|
|
|
|
if (dx<d1) dx=d1;
|
|
|
|
i=iarry-1;
|
|
|
|
xka2=arry[i][3];
|
|
yka2=arry[i][4];
|
|
|
|
xka1=arry[i][3]+dx*cos(q);
|
|
yka1=arry[i][4]+dx*sin(q);
|
|
|
|
itwall=0;
|
|
|
|
// ads_printf(_T("\nAAAxka1=%f,yka1=%f,xka2=%f,yka2=%f"),xka1,yka1,xka2,yka2);
|
|
|
|
|
|
ulin4b();
|
|
|
|
if (itwall==1) {
|
|
|
|
// ads_printf(_T("\nBBBxka1=%f,yka1=%f,xka2=%f,yka2=%f"),xka1,yka1,xka2,yka2);
|
|
|
|
i=iarry;
|
|
arry[i][1]=xka2; arry[i][2]=yka2;
|
|
arry[i][3]=xka1; arry[i][4]=yka1;
|
|
arry[i][5]=0; arry[i][6]=0;
|
|
|
|
if (iarry<300) { iarry=iarry+1; goto aa0; }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void ulin4b(void)
|
|
{ struct resbuf *ebup,*rb;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
ads_name ss1,en;
|
|
|
|
int it1,it2;
|
|
|
|
ads_real x0=0,y0=0,x1,y1,x2,y2,q,dx,dy,d1,d2,ds0,ds;
|
|
ads_real xp1=0,yp1=0,xp2=0,yp2=0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
ads_point p01,p02;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
ds0=20000;
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
|
|
p2[0]=p2[0]+10*cos(q);
|
|
p2[1]=p2[1]+10*sin(q);
|
|
|
|
//ads_printf(_T("\nASD22 p1[0]=%f,p1[1]=%f,p2[0]=%f,p2[1]=%f"),p1[0],p1[1],p2[0],p2[1]);
|
|
// hlin(p1[0],p1[1],p2[0],p2[1],3);
|
|
|
|
|
|
p01[0]=p1[0]; p01[1]=p1[1]; p01[2]=0;
|
|
p02[0]=p2[0]; p02[1]=p2[1]; p02[2]=0;
|
|
|
|
ul112l(p1[0],p1[1],p2[0],p2[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8,(const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
goto mbb1;
|
|
//
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
// lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
|
|
d1=800;
|
|
d2=1600;
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x1+800*cos(q);
|
|
p4[1]=y1+800*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x1+800*cos(q);
|
|
p3[1]=y1+800*sin(q);
|
|
|
|
it1=0; it2=0;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x1; dy=pp[1]-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
}
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) it1=1;
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x2+800*cos(q);
|
|
p4[1]=y2+800*sin(q);
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x2+800*cos(q);
|
|
p3[1]=y2+800*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) {
|
|
dx=pp[0]-x2; dy=pp[1]-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
}
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) it2=1;
|
|
|
|
if ((it1==0)&&(it2==0)) goto mbb1;
|
|
|
|
if ((d1<ds111)&&(d2<ds111)) {
|
|
|
|
// ads_printf(_T("\nit1=%d,it2=%d"),it1,it2);
|
|
|
|
dx=xka2-x1; dy=yka2-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>10)&&(d1<ds0)) {
|
|
x0=x1; y0=y1;
|
|
ds0=d1;
|
|
|
|
xp1=x2; yp1=y2;
|
|
xp2=x1; yp2=y1;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
}
|
|
|
|
dx=xka2-x2; dy=yka2-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>10)&&(d1<ds0)) {
|
|
|
|
x0=x2; y0=y2;
|
|
ds0=d1;
|
|
|
|
xp1=x1; yp1=y1;
|
|
xp2=x2; yp2=y2;
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
// ads_printf(_T("\nds0=%f"),ds0);
|
|
|
|
|
|
if (ds0<20000) {
|
|
|
|
// ads_printf(_T("\nASD ds0=%f"),ds0);
|
|
// hlin(xp1,yp1,xp2,yp2,2);
|
|
|
|
p1[0]=arry[1][1]; p1[1]=arry[1][2];
|
|
p2[0]=arry[1][3]; p2[1]=arry[1][4];
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=x0+8000*cos(q);
|
|
p4[1]=y0+8000*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p3[0]=x0+8000*cos(q);
|
|
p3[1]=y0+8000*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
|
|
// ads_printf(_T("\nASD22 ds0=%f"),ds0);
|
|
|
|
ads_ssadd(entch,ensspp0,ensspp0);
|
|
|
|
dx=xka2-xp2; dy=yka2-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
// ads_printf(_T("\nd1=%f"),d1);
|
|
|
|
itwall=1;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
if (d1<dx) {
|
|
xka1=xp1; yka1=yp1;
|
|
xka2=xp2; yka2=yp2;
|
|
strlin(); } else {
|
|
xka1=xp2; yka1=yp2;
|
|
xka2=xp1; yka2=yp1;
|
|
strlin();
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
strlin();
|
|
}
|
|
|
|
// hlin(xka1,yka1,xka2,yka2,5);
|
|
}
|
|
}
|
|
}
|
|
|
|
void ulin4ab(void)
|
|
{ int i,j;
|
|
ads_real q,dx,dy,d1;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
aa0:p1[0]=arry[1][1]; p1[1]=arry[1][2];
|
|
p2[0]=arry[1][3]; p2[1]=arry[1][4];
|
|
|
|
|
|
qjadu(p1[0],p1[1],p2[0],p2[1]);
|
|
q=(qhcjc+90)*pi314/180;
|
|
|
|
i=2;
|
|
|
|
dx=8000.0;
|
|
p3[0]=arry[i][1]+dx*cos(q); p3[1]=arry[i][2]+dx*sin(q);
|
|
p4[0]=arry[i][1]-dx*cos(q); p4[1]=arry[i][2]-dx*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto dd1;
|
|
return;
|
|
|
|
dd1:dx=pp[0]-arry[1][1]; dy=pp[1]-arry[1][2];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
// if (d1<10*ds111) return;
|
|
if (d1<dswa500) return;
|
|
|
|
q=(qhcjc-180)*pi314/180;
|
|
dx=2*whou;
|
|
if (dx<1000) dx=1000;
|
|
|
|
if (dx<d1) dx=d1;
|
|
|
|
i=2;
|
|
|
|
xka2=arry[i][1];
|
|
yka2=arry[i][2];
|
|
|
|
xka1=arry[i][1]+dx*cos(q);
|
|
yka1=arry[i][2]+dx*sin(q);
|
|
|
|
// hlin(xka1,yka1,xka2,yka2,7);
|
|
|
|
itwall=0;
|
|
|
|
// ads_printf(_T("\nCCC arry[i][1]=%f,arry[i][2]=%f,arry[i][3]=%f,arry[i][4]=%f"),arry[i][1],arry[i][2],arry[i][3],arry[i][4]);
|
|
// ads_printf(_T("\nDDDxka2=%f,yka2=%f,xka1=%f,yka1=%f"),xka2,yka2,xka1,yka1);
|
|
|
|
ulin4b();
|
|
|
|
if (itwall==1) {
|
|
|
|
//ads_printf(_T("\nEEExka2=%f,yka2=%f,xka1=%f,yka1=%f"),xka2,yka2,xka1,yka1);
|
|
|
|
i=iarry;
|
|
j=i-1;
|
|
|
|
ccc: arry[i][1]=arry[j][1]; arry[i][2]=arry[j][2];
|
|
arry[i][3]=arry[j][3]; arry[i][4]=arry[j][4];
|
|
arry[i][5]=arry[j][5]; arry[i][6]=arry[j][6];
|
|
i=i-1;
|
|
j=j-1;
|
|
|
|
if (i>2) goto ccc;
|
|
|
|
i=2;
|
|
|
|
// arry[i][1]=xka2; arry[i][2]=yka2;
|
|
// arry[i][3]=xka1; arry[i][4]=yka1;
|
|
// arry[i][5]=0; arry[i][6]=0;
|
|
|
|
arry[i][1]=xka1; arry[i][2]=yka1;
|
|
arry[i][3]=xka2; arry[i][4]=yka2;
|
|
arry[i][5]=0; arry[i][6]=0;
|
|
|
|
|
|
if (iarry<300) {
|
|
iarry=iarry+1; goto aa0; }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void ulin5(void)
|
|
{
|
|
int i;
|
|
|
|
i=2;
|
|
|
|
aaa:xka1=arry[1][1]; yka1=arry[1][2];
|
|
xka2=arry[1][3]; yka2=arry[1][4];
|
|
|
|
xwb1=arry[i][1]; ywb1=arry[i][2];
|
|
xwb2=arry[i][3]; ywb2=arry[i][4];
|
|
|
|
ulin5a(i);
|
|
|
|
i=i+1;
|
|
if (i<iarry) goto aaa;
|
|
|
|
}
|
|
|
|
|
|
|
|
void uldote(ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d0,x0,y0;
|
|
ads_real q,q1,dq,xp0,yp0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
x0=(xp1+xp2)/2;
|
|
y0=(yp1+yp2)/2;
|
|
d0=2000;
|
|
|
|
p01[0]=xp1; p01[1]=yp1; p01[2]=0;
|
|
p02[0]=xp2; p02[1]=yp2; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
|
|
x1=xp1; x2=xp2;
|
|
if (x2<x1) { x1=xp2; x2=xp1;}
|
|
|
|
y1=yp1; y2=yp2;
|
|
if (y2<y1) { y1=yp2; y2=yp1; }
|
|
|
|
p01[0]=x1-1000; p01[1]=y1-1000; p01[2]=0;
|
|
p02[0]=x2+1000; p02[1]=y2+1000; p02[2]=0;
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, LAY_AXIS, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("DOTE,")<<LAY_AXIS;
|
|
RBList mask(RTDXF0, _T("LINE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('D'))&&(txtnam8[1]==_T('O'))&&(txtnam8[2]==_T('T'))&&(txtnam8[3]==_T('E'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
// goto mbb1;
|
|
// lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
q1=qhcjc;
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>179) { dq=dq-180; goto qq1; }
|
|
if (dq>1) goto mbb1;
|
|
|
|
|
|
qjadu(xp1,yp1,xp2,yp2);
|
|
q=(qhcjc-180)*pi314/180;
|
|
|
|
p1[0]=xp1+ds111*cos(q); p1[1]=yp1+ds111*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=xp2+ds111*cos(q); p2[1]=yp2+ds111*sin(q);
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-x0; dy=pp[1]-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (d0<2000) {
|
|
|
|
itdote=1;
|
|
|
|
dx=xp0-x0; dy=yp0-y0;
|
|
xdz1=xdz1+dx; ydz1=ydz1+dy;
|
|
xdz2=xdz2+dx; ydz2=ydz2+dy;
|
|
|
|
// hlin(xdz1,ydz1,xdz2,ydz2,7);
|
|
//ads_printf(_T("\nxdz1=%f,ydz1=%f,xdz2=%f,ydz2=%f"),xdz1,ydz1,xdz2,ydz2);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void uldote23(int it0,ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,x0,y0;
|
|
ads_real q,q1,dq,xp0,yp0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
x0=(xp1+xp2)/2;
|
|
y0=(yp1+yp2)/2;
|
|
|
|
dx=wwjul;
|
|
|
|
qjadu(xp1,yp1,xp2,yp2);
|
|
q=(qhcjc+90)*pi314/180;
|
|
p01[0]=x0+dx*cos(q); p01[1]=y0+dx*sin(q); p01[2]=0;
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p02[0]=x0+dx*cos(q); p02[1]=y0+dx*sin(q); p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, LAY_AXIS, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("DOTE,")<<LAY_AXIS;
|
|
RBList mask(RTDXF0, _T("LINE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('D'))&&(txtnam8[1]==_T('O'))&&(txtnam8[2]==_T('T'))&&(txtnam8[3]==_T('E'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
// lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
q1=qhcjc;
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>179) { dq=dq-180; goto qq1; }
|
|
if (dq>1) goto mbb1;
|
|
|
|
p1[0]=p01[0]; p1[1]=p01[1];
|
|
p2[0]=p02[0]; p2[1]=p02[1];
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-x0; dy=pp[1]-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<dsdote) {
|
|
dsdote=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (dsdote<2000) {
|
|
|
|
itdote=it0;
|
|
xdot=xp0; ydot=yp0;
|
|
|
|
// hlin(xdz1,ydz1,xdz2,ydz2,7);
|
|
//ads_printf(_T("\nxdz1=%f,ydz1=%f,xdz2=%f,ydz2=%f"),xdz1,ydz1,xdz2,ydz2);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void wlinTDOTE(ads_point p1,ads_point p2)
|
|
{
|
|
struct resbuf *rb;
|
|
ads_name en;
|
|
ads_real dx,dy,d1;
|
|
|
|
dx=p1[0]-p2[0]; dy=p1[1]-p2[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) return;
|
|
|
|
rb=ads_buildlist(RTDXF0,_T("LINE"),10,p1,11,p2,
|
|
6,_T("BYLAYER"),
|
|
8,_T("TDOTE"),
|
|
62,256,
|
|
39,3000.0,
|
|
-3,
|
|
1001,_T("TDOTE"),
|
|
1040,whouz,
|
|
1040,whouy,
|
|
NULL);
|
|
|
|
ads_entmake(rb);
|
|
ads_relrb(rb);
|
|
|
|
if (ads_entlast(en)==RTNORM) {
|
|
|
|
ads_ssadd(en,endd0,endd0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void tzhb(void)
|
|
{ struct resbuf *ebup,*rbp;
|
|
ads_name en;
|
|
int typi,itn;
|
|
|
|
Adesk::Int32 len,i;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,rr,q1,q2;
|
|
TCHAR zf[40]=_T("");
|
|
|
|
itn=0;
|
|
|
|
aa0:i=0;
|
|
itn=itn+1;
|
|
if (itn>5000) return;
|
|
|
|
if (ads_sslength(ensspp,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:if (len==0) return;
|
|
|
|
ads_ssname(ensspp,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rbp=ebup;rbp!=NULL;rbp=rbp->rbnext) {
|
|
typi=rbp->restype;
|
|
if (typi==0) _tcscpy(zf,rbp->resval.rstring);
|
|
if (typi==40) rr=rbp->resval.rreal;
|
|
if (typi==50) q1=rbp->resval.rreal;
|
|
if (typi==51) q2=rbp->resval.rreal;
|
|
if (typi==10) {
|
|
x1=rbp->resval.rpoint[0];
|
|
y1=rbp->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rbp->resval.rpoint[0];
|
|
y2=rbp->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rbp);
|
|
|
|
if ((zf[0]==_T('L'))&&(zf[1]==_T('I'))&&(zf[2]==_T('N'))&&(zf[3]==_T('E'))) goto lin;
|
|
if ((zf[0]==_T('A'))&&(zf[1]==_T('R'))&&(zf[2]==_T('C'))) goto cir;
|
|
if ((zf[0]==_T('C'))&&(zf[1]==_T('I'))&&(zf[2]==_T('R'))&&(zf[3]==_T('C'))&&(zf[4]==_T('L'))&&(zf[5]==_T('E'))) goto cir;
|
|
goto bb1;
|
|
|
|
cir:if (rr<ds111) {
|
|
ads_ssdel(en,ensspp);
|
|
goto aa0; }
|
|
|
|
// ads_ssadd(en,ensspp0,ensspp0);
|
|
ads_ssdel(en,ensspp);
|
|
goto aa0;
|
|
|
|
lin:dx=x1-x2;
|
|
dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
ads_ssdel(en,ensspp);
|
|
goto aa0; }
|
|
|
|
|
|
if (d1<60) goto bb1;
|
|
|
|
// 处理小于墙厚的墙线
|
|
// if (d1<whou) goto bb1;
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
|
|
itmen=0;
|
|
|
|
// 判定是否窗头线
|
|
|
|
qmmma();
|
|
|
|
// ads_printf(_T("\nitmen=%d"),itmen);
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
|
|
// 判定是否端头线
|
|
|
|
if (itmen==0) ulwa00();
|
|
|
|
if (itmen==0) {
|
|
|
|
ads_name_set(en,entch);
|
|
xka1=x2; yka1=y2; xka2=x1; yka2=y1;
|
|
|
|
ddar[1][5]=0;
|
|
ddar[2][5]=0;
|
|
|
|
ulin0();
|
|
|
|
goto aa0; }
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
|
|
|
|
void qmmma(void)
|
|
{
|
|
struct resbuf apps,*ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,gs1,gs2,gs3;
|
|
ads_real r41,r42,q1,bs,q;
|
|
|
|
ads_point p01,p02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),txtins[40]=_T(""),buf[40]=_T("");
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
// ads_printf(_T("mmmm"));
|
|
// xb1=xdo1; yb1=ydo1;
|
|
// xb2=xdo2; yb2=ydo2;
|
|
// hlin(xdo1,ydo1,xdo2,ydo2,7);
|
|
|
|
x1=xdo1; x2=xdo2;
|
|
if (x2<x1) { x1=xdo2; x2=xdo1;}
|
|
|
|
y1=ydo1; y2=ydo2;
|
|
if (y2<y1) { y1=ydo2; y2=ydo1; }
|
|
|
|
|
|
dx=100*ds111;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x2+dx; p02[1]=y2+dx; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
//modified by whl
|
|
//RBList mask(RTDXF0, _T("INSERT"), 8, LAY_WIN, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WINDOW,")<<LAY_WIN;
|
|
RBList mask(RTDXF0, _T("INSERT"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("WTHICK"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) return;
|
|
|
|
it=0; gs1=0; gs2=0; gs3=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
if (typi==2) _tcscpy(txtins,rb->resval.rstring);
|
|
if (typi==41) r41=rb->resval.rreal;
|
|
if (typi==42) r42=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
if (it==3) gs3=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('I'))&&(txtnam8[2]==_T('N'))&&(txtnam8[3]==_T('D'))&&(txtnam8[4]==_T('O'))&&(txtnam8[5]==_T('W'))) goto bbwa;
|
|
// goto mbb1;
|
|
|
|
//bbwa: if ((txtdxf0[0]==_T('I'))&&(txtdxf0[1]==_T('N'))&&(txtdxf0[2]==_T('S'))&&(txtdxf0[3]==_T('E'))&&(txtdxf0[4]==_T('R'))&&(txtdxf0[5]==_T('T'))) goto bbin;
|
|
// goto mbb1;
|
|
|
|
//bbin:
|
|
mank=0; inntm=0; manam=0;
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f,gs3=%f"),gs1,gs2,gs3);
|
|
if (gs1<=0) gs1=400;
|
|
|
|
if (mank==0) tchmtxt(txtins);
|
|
|
|
bs=r41;
|
|
if (bs<0) bs=-bs;
|
|
mank=bs*mank;
|
|
|
|
if (mank>10*ds111) {
|
|
|
|
p3[0]=x1; p3[1]=y1; p3[2]=0;
|
|
|
|
qhcjc=q1*180/pi314;
|
|
if (r41<0) qhcjc=qhcjc+180;
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
dx=(mank+ds111)/2;
|
|
p3[0]=x1+dx*cos(q);
|
|
p3[1]=y1+dx*sin(q);
|
|
p3[2]=0;
|
|
|
|
q=qhcjc*pi314/180;
|
|
p4[0]=x1+dx*cos(q);
|
|
p4[1]=y1+dx*sin(q);
|
|
p4[2]=0;
|
|
|
|
xdz1=p3[0]; ydz1=p3[1];
|
|
xdz2=p4[0]; ydz2=p4[1];
|
|
|
|
dx=ds111+mank/2;
|
|
|
|
x2=x1+dx*cos(q);
|
|
y2=y1+dx*sin(q);
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
x1=x1+dx*cos(q);
|
|
y1=y1+dx*sin(q);
|
|
|
|
p1[0]=xdo1; p1[1]=ydo1;
|
|
p2[0]=xdo2; p2[1]=ydo2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto qjdmm;
|
|
goto mbb1;
|
|
|
|
qjdmm:itmen=1;
|
|
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto strbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
void ulin5a(int i0)
|
|
{ int it11,it12,it21,it22;
|
|
|
|
ads_real q,dx,dy,d1,dhh;
|
|
ads_real xp1,yp1,xp2,yp2,x0,y0;
|
|
ads_real x11,y11,x12,y12,x21,y21,x22,y22;
|
|
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
p3[0]=(xwb1+xwb2)/2;
|
|
p3[1]=(ywb1+ywb2)/2;
|
|
q=(qhcjc+90)*pi314/180;
|
|
|
|
p4[0]=p3[0]+100*cos(q);
|
|
p4[1]=p3[1]+100*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,0,pp)==RTNORM) goto lin;
|
|
return;
|
|
|
|
lin:dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
dhh=sqrt(dx*dx+dy*dy);
|
|
if (dhh<10*ds111) return;
|
|
|
|
// qjadu(p3[0],p3[1],pp[0],pp[1]);
|
|
// q=qhcjc*pi314/180;
|
|
// xdz1=p3[0]+dhh*cos(q)/2;
|
|
// ydz1=p3[1]+dhh*sin(q)/2;
|
|
// qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
x11=xka1; y11=yka1;
|
|
x12=xka2; y12=yka2;
|
|
|
|
x21=xwb1; y21=ywb1;
|
|
x22=xwb2; y22=ywb2;
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p3[0]=xwb1+8000*cos(q);
|
|
p3[1]=ywb1+8000*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=xwb1+8000*cos(q);
|
|
p4[1]=ywb1+8000*sin(q);
|
|
|
|
it11=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
x11=pp[0]; y11=pp[1];
|
|
it11=1; }
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p3[0]=xwb2+8000*cos(q);
|
|
p3[1]=ywb2+8000*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=xwb2+8000*cos(q);
|
|
p4[1]=ywb2+8000*sin(q);
|
|
|
|
it12=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
x12=pp[0]; y12=pp[1];
|
|
it12=1; }
|
|
|
|
|
|
p1[0]=xwb1; p1[1]=ywb1;
|
|
p2[0]=xwb2; p2[1]=ywb2;
|
|
|
|
qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p3[0]=xka1+8000*cos(q);
|
|
p3[1]=yka1+8000*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=xka1+8000*cos(q);
|
|
p4[1]=yka1+8000*sin(q);
|
|
|
|
it21=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
x21=pp[0]; y21=pp[1];
|
|
it21=1;
|
|
|
|
if (i0==2) {
|
|
dx=x21-xwb1; dy=y21-ywb1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>800.0)&&(ddar[1][5]==200)) {
|
|
ddar[1][1]=xwb1; ddar[1][2]=ywb1;
|
|
ddar[1][3]=x21; ddar[1][4]=y21;
|
|
ddar[1][5]=0; ddar[1][6]=0;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p3[0]=xka2+8000*cos(q);
|
|
p3[1]=yka2+8000*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=xka2+8000*cos(q);
|
|
p4[1]=yka2+8000*sin(q);
|
|
|
|
it22=0;
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
x22=pp[0]; y22=pp[1];
|
|
it22=1;
|
|
|
|
if (i0==iarry-1) {
|
|
dx=x22-xwb2; dy=y22-ywb2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>800.0)&&(ddar[2][5]==200)) {
|
|
ddar[2][1]=x22; ddar[2][2]=y22;
|
|
ddar[2][3]=xwb2; ddar[2][4]=ywb2;
|
|
ddar[2][5]=0; ddar[2][6]=0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
xdz1=(x11+x21)/2; ydz1=(y11+y21)/2;
|
|
xdz2=(x12+x22)/2; ydz2=(y12+y22)/2;
|
|
|
|
// hlin(xdz1,ydz1,xdz2,ydz2,3);
|
|
|
|
xp1=(x11+x12)/2; yp1=(y11+y12)/2;
|
|
xp2=(x21+x22)/2; yp2=(y21+y22)/2;
|
|
|
|
// hlin(xp1,yp1,xp2,yp2,7);
|
|
|
|
itdote=0;
|
|
|
|
uldote(xp1,yp1,xp2,yp2);
|
|
|
|
if ((itdote==0)&&(wwjul>0)) {
|
|
|
|
xdot=(xdz1+xdz2)/2;
|
|
ydot=(ydz1+ydz2)/2;
|
|
|
|
x0=xdot; y0=ydot;
|
|
|
|
dsdote=2000.0;
|
|
|
|
uldote23(2,x11,y11,x12,y12);
|
|
uldote23(3,x21,y21,x22,y22);
|
|
|
|
if (itdote==0) goto aaa;
|
|
|
|
dx=xdot-x0; dy=ydot-y0;
|
|
xdz1=xdz1+dx; ydz1=ydz1+dy;
|
|
xdz2=xdz2+dx; ydz2=ydz2+dy;
|
|
|
|
whouz=0; whouy=0;
|
|
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
|
|
p3[0]=(xdz1+xdz2)/2;
|
|
p3[1]=(ydz1+ydz2)/2;
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=p3[0]+8000*cos(q);
|
|
p4[1]=p3[1]+8000*sin(q);
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouy=d1;
|
|
}
|
|
|
|
p1[0]=xwb1; p1[1]=ywb1;
|
|
p2[0]=xwb2; p2[1]=ywb2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouz=d1;
|
|
}
|
|
|
|
//ads_printf(_T("\nAAA whouz=%f,whouy=%f"),whouz,whouy);
|
|
|
|
if ((whouz>0)&&(whouy>0)) {
|
|
|
|
if (whouy<whouz) {
|
|
dx=whouz; whouz=whouy; whouy=dx; }
|
|
|
|
whouz=-whouz;
|
|
|
|
// ads_printf(_T("\nAAA whouz=%f,whouy=%f"),whouz,whouy);
|
|
|
|
goto edd;
|
|
}
|
|
|
|
|
|
whouz=0; whouy=0;
|
|
|
|
p3[0]=(xdz1+xdz2)/2;
|
|
p3[1]=(ydz1+ydz2)/2;
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=p3[0]+8000*cos(q);
|
|
p4[1]=p3[1]+8000*sin(q);
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouz=d1;
|
|
}
|
|
|
|
p1[0]=xwb1; p1[1]=ywb1;
|
|
p2[0]=xwb2; p2[1]=ywb2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouy=d1;
|
|
}
|
|
|
|
//ads_printf(_T("\nBBB whouz=%f,whouy=%f"),whouz,whouy);
|
|
|
|
if ((whouz>0)&&(whouy>0)) {
|
|
|
|
if (whouz<whouy) {
|
|
dx=whouz; whouz=whouy; whouy=dx; }
|
|
|
|
whouy=-whouy;
|
|
|
|
//ads_printf(_T("\nBBB whouz=%f,whouy=%f"),whouz,whouy);
|
|
goto edd;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
aaa: whouz=0; whouy=0;
|
|
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
|
|
p3[0]=(xdz1+xdz2)/2;
|
|
p3[1]=(ydz1+ydz2)/2;
|
|
q=(qhcjc-90)*pi314/180;
|
|
p4[0]=p3[0]+8000*cos(q);
|
|
p4[1]=p3[1]+8000*sin(q);
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouy=d1;
|
|
}
|
|
|
|
p1[0]=xwb1; p1[1]=ywb1;
|
|
p2[0]=xwb2; p2[1]=ywb2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouy=d1;
|
|
}
|
|
|
|
|
|
p3[0]=(xdz1+xdz2)/2;
|
|
p3[1]=(ydz1+ydz2)/2;
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p4[0]=p3[0]+8000*cos(q);
|
|
p4[1]=p3[1]+8000*sin(q);
|
|
|
|
p1[0]=xka1; p1[1]=yka1;
|
|
p2[0]=xka2; p2[1]=yka2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouz=d1;
|
|
}
|
|
|
|
p1[0]=xwb1; p1[1]=ywb1;
|
|
p2[0]=xwb2; p2[1]=ywb2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=p3[0]-pp[0]; dy=p3[1]-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>0.0001) whouz=d1;
|
|
}
|
|
|
|
|
|
edd:p1[0]=xdz1; p1[1]=ydz1; p1[2]=0;
|
|
p2[0]=xdz2; p2[1]=ydz2; p2[2]=0;
|
|
|
|
// hlin(xdz1,ydz1,xdz2,ydz2,3);
|
|
|
|
wlinTDOTE(p1,p2);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ulwa00(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d01,d02;
|
|
ads_real q1,dq;
|
|
ads_real x11,y11,x12,y12,x21,y21,x22,y22;
|
|
|
|
ads_point p01,p02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
|
|
x1=xdo1; x2=xdo2;
|
|
if (x2<x1) { x1=xdo2; x2=xdo1;}
|
|
|
|
y1=ydo1; y2=ydo2;
|
|
if (y2<y1) { y1=ydo2; y2=ydo1; }
|
|
|
|
p01[0]=x1-10*ds111; p01[1]=y1-10*ds111; p01[2]=0;
|
|
p02[0]=x2+10*ds111; p02[1]=y2+10*ds111; p02[2]=0;
|
|
|
|
d01=2000; d02=2000;
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE"), 8,(const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
// goto mbb1;
|
|
|
|
//bbwa: if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto bbin;
|
|
// goto mbb1;
|
|
|
|
//bbin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
if ((fabs(x1-xdo1)<1.0E-6)&&
|
|
(fabs(y1-ydo1)<1.0E-6)&&
|
|
(fabs(x2-xdo2)<1.0E-6)&&
|
|
(fabs(y2-ydo2)<1.0E-6)) goto mbb1;
|
|
|
|
qjadu(xdo1,ydo1,xdo2,ydo2);
|
|
q1=qhcjc;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>269) { dq=dq-180; goto qq1; }
|
|
|
|
// ads_printf(_T("dq %f"),dq);
|
|
|
|
if ((dq<70)||(dq>101)) goto mbb1;
|
|
|
|
dx=xdo1-x1; dy=ydo1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
d01=d1;
|
|
x11=x1; y11=y1; x12=x2; y12=y2;
|
|
}
|
|
|
|
dx=xdo1-x2; dy=ydo1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
d01=d1;
|
|
x11=x2; y11=y2; x12=x1; y12=y1;
|
|
}
|
|
|
|
dx=xdo2-x1; dy=ydo2-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
d02=d1;
|
|
x21=x1; y21=y1; x22=x2; y22=y2;
|
|
}
|
|
|
|
dx=xdo2-x2; dy=ydo2-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
d02=d1;
|
|
x21=x2; y21=y2; x22=x1; y22=y1;
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
|
|
if (i<len) goto strbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
// ads_printf(_T("\nd01=%f,d02=%f"),d01,d02);
|
|
|
|
if ((d02<ds111)&&(d01<ds111)) {
|
|
qjadu(x11,y11,x12,y12);
|
|
q1=qhcjc;
|
|
|
|
qjadu(x21,y21,x22,y22);
|
|
dq=q1-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
if (dq>359) dq=dq-360;
|
|
if (dq<20) itmen=1;
|
|
}
|
|
|
|
}
|
|
|
|
void tzha(void)
|
|
{ struct resbuf *ebup,*rbp;
|
|
ads_name en;
|
|
int typi,itn;
|
|
|
|
Adesk::Int32 len,i;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,rr,dq,q1,q2;
|
|
TCHAR zf[40]=_T("");
|
|
|
|
itn=0;
|
|
|
|
aa0:i=0;
|
|
itn=itn+1;
|
|
if (itn>5000) return;
|
|
|
|
|
|
if (ads_sslength(ensspp,&len)==RTNORM) goto bbb;
|
|
|
|
return;
|
|
|
|
bbb:if (len==0) return;
|
|
|
|
ads_ssname(ensspp,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rbp=ebup;rbp!=NULL;rbp=rbp->rbnext) {
|
|
typi=rbp->restype;
|
|
if (typi==0) _tcscpy(zf,rbp->resval.rstring);
|
|
if (typi==40) rr=rbp->resval.rreal;
|
|
if (typi==50) q1=rbp->resval.rreal;
|
|
if (typi==51) q2=rbp->resval.rreal;
|
|
if (typi==10) {
|
|
x1=rbp->resval.rpoint[0];
|
|
y1=rbp->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rbp->resval.rpoint[0];
|
|
y2=rbp->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rbp);
|
|
|
|
if ((zf[0]==_T('L'))&&(zf[1]==_T('I'))&&(zf[2]==_T('N'))&&(zf[3]==_T('E'))) goto lin;
|
|
if ((zf[0]==_T('A'))&&(zf[1]==_T('R'))&&(zf[2]==_T('C'))) goto cir;
|
|
if ((zf[0]==_T('C'))&&(zf[1]==_T('I'))&&(zf[2]==_T('R'))&&(zf[3]==_T('C'))&&(zf[4]==_T('L'))&&(zf[5]==_T('E'))) goto cir;
|
|
goto bb1;
|
|
|
|
cir:if (rr<ds111) { //删除小圆弧
|
|
ads_ssdel(en,ensspp);
|
|
goto aa0; }
|
|
|
|
|
|
|
|
ads_name_set(en,entch);
|
|
|
|
xka1=x1; yka1=y1; karr=rr;
|
|
|
|
kaq1=q1*180/pi314;
|
|
kaq2=q2*180/pi314;
|
|
if (kaq2<kaq1) kaq2=kaq2+360;
|
|
|
|
dq=kaq2-kaq1;
|
|
d1=2*pi314*rr*dq/360;
|
|
|
|
//小于10 长度的墙线不处理
|
|
|
|
if (d1<10*ds111) goto bb1;
|
|
|
|
ularc();
|
|
|
|
goto aa0;
|
|
|
|
lin:dx=x1-x2;
|
|
dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) {
|
|
ads_ssdel(en,ensspp);
|
|
goto aa0; }
|
|
|
|
//小于墙厚的墙线可能是窗线,不处理
|
|
|
|
if (d1<whou) goto bb1;
|
|
|
|
ads_name_set(en,entch);
|
|
xka1=x2; yka1=y2; xka2=x1; yka2=y1;
|
|
|
|
ddar[1][5]=200;
|
|
ddar[2][5]=200;
|
|
|
|
ulin0();
|
|
|
|
// 可能导致重合墙,因此用全局变量控制执行与否
|
|
if (g_nProcessMore) {
|
|
if (ddar[1][5]==0) ulin0dd(1);
|
|
if (ddar[2][5]==0) ulin0dd(2);
|
|
}
|
|
goto aa0;
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
void ulin0dd(int i0)
|
|
{ ads_real ds2;
|
|
|
|
ds2=ddar[2][5];
|
|
|
|
ddar[2][5]=0;
|
|
xka1=ddar[i0][1]; yka1=ddar[i0][2]; xka2=ddar[i0][3]; yka2=ddar[i0][4];
|
|
ulin0dda();
|
|
|
|
ddar[2][5]=ds2;
|
|
}
|
|
|
|
|
|
void ularc(void)
|
|
{
|
|
// ads_real ds;
|
|
|
|
ads_ssadd(NULL,NULL,ensspp0);
|
|
ads_ssadd(entch,ensspp0,ensspp0);
|
|
|
|
arry[2][5]=0;
|
|
|
|
arry[1][1]=xka1; arry[1][2]=yka1;
|
|
arry[1][3]=karr; arry[1][4]=kaq1;
|
|
arry[1][5]=6; arry[1][6]=kaq2;
|
|
|
|
|
|
ularc3();
|
|
|
|
if (arry[2][5]==0) goto sdd;
|
|
|
|
|
|
|
|
itmen=0;
|
|
|
|
// ads_printf(_T("\n111 kaq1=%f,kaq2=%f,karr=%f"),kaq1,kaq2,karr);
|
|
|
|
yyyq();
|
|
|
|
if (kaq2<kaq1+359) yyyqa();
|
|
|
|
// ads_printf(_T("\n111 end kaq1=%f,kaq2=%f"),kaq1,kaq2);
|
|
|
|
arry[1][1]=xka1; arry[1][2]=yka1;
|
|
arry[1][3]=karr; arry[1][4]=kaq1;
|
|
arry[1][5]=6; arry[1][6]=kaq2;
|
|
|
|
// hxucirarry(1,7);
|
|
// TCHAR dxfnam[40];
|
|
// ads_getstring(5,NULL,dxfnam);
|
|
|
|
if (arry[2][5]==6) {
|
|
xka1=arry[2][1]; yka1=arry[2][2];
|
|
karr=arry[2][3]; kaq1=arry[2][4];
|
|
kaq2=arry[2][6];
|
|
|
|
// ads_printf(_T("\n222 kaq1=%f,kaq2=%f,karr=%f"),kaq1,kaq2,karr);
|
|
|
|
yyyq();
|
|
|
|
if (kaq2<kaq1+359) yyyqa();
|
|
|
|
// ads_printf(_T("\n222 end kaq1=%f,kaq2=%f"),kaq1,kaq2);
|
|
|
|
arry[2][1]=xka1; arry[2][2]=yka1;
|
|
arry[2][3]=karr; arry[2][4]=kaq1;
|
|
arry[2][5]=6; arry[2][6]=kaq2;
|
|
|
|
// hxucirarry(2,2);
|
|
// TCHAR dxfnam[40];
|
|
// ads_getstring(5,NULL,dxfnam);
|
|
|
|
}
|
|
|
|
|
|
if ((arry[1][5]==6)&&(arry[2][5]==6)) {
|
|
ularc4(1);
|
|
ularc4(2); }
|
|
|
|
if ((arry[1][5]==6)&&(arry[2][5]==6)) {
|
|
ularcdote();
|
|
}
|
|
|
|
if (ientd==0) addentd();
|
|
|
|
sdd:ssdelenpp0();
|
|
|
|
ads_ssfree(ensspp0);
|
|
|
|
}
|
|
|
|
|
|
void qyxpoint(void)
|
|
{
|
|
ads_real x0,y0,d1,d2;
|
|
ads_real dx,dy,x1,y1,q,dd,dh,dx1,dx2,r1,r2;
|
|
ads_real xj1,yj1,xj2,yj2,x01,y01,x02,y02;
|
|
|
|
arrysa[3][5]=0;
|
|
|
|
x01=arrysa[1][1]; y01=arrysa[1][2]; r1=arrysa[1][3];
|
|
x02=arrysa[2][1]; y02=arrysa[2][2]; r2=arrysa[2][3];
|
|
|
|
dx=x01-x02;
|
|
dy=y01-y02;
|
|
dd=sqrt(dx*dx+dy*dy);
|
|
dx=r1+r2;
|
|
|
|
if ((dd>dx)||(dd<jsjdu)) return;
|
|
|
|
if (r1<r2) {
|
|
dy=r1+dd;
|
|
if (dy<r2) return; }
|
|
|
|
if (r2<r1) {
|
|
dy=r2+dd;
|
|
if (dy<r1) return; }
|
|
|
|
dx2=(r2*r2-r1*r1+dd*dd)/(2*dd);
|
|
dx1=dd-dx2;
|
|
|
|
dh=r2*r2-dx2*dx2;
|
|
if (dh<0) return;
|
|
|
|
dh=sqrt(dh);
|
|
qjadu(x01,y01,x02,y02);
|
|
q=qhcjc*pi314/180;
|
|
x1=x01+dx1*cos(q);
|
|
y1=y01+dx1*sin(q);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
xj1=x1+dh*cos(q);
|
|
yj1=y1+dh*sin(q);
|
|
q=(qhcjc-90)*pi314/180;
|
|
xj2=x1+dh*cos(q);
|
|
yj2=y1+dh*sin(q);
|
|
|
|
qjadu(x01,y01,x02,y02);
|
|
q=(qhcjc+90)*pi314/180;
|
|
x0=x01+1000*cos(q);
|
|
y0=y01+1000*sin(q);
|
|
dx=x0-xj1;
|
|
dy=y0-yj1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x0-xj2;
|
|
dy=y0-yj2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
arrysa[3][1]=xj1; arrysa[3][2]=yj1;
|
|
arrysa[3][3]=xj2; arrysa[3][4]=yj2;
|
|
|
|
if (d2<d1) {
|
|
arrysa[3][1]=xj2; arrysa[3][2]=yj2;
|
|
arrysa[3][3]=xj1; arrysa[3][4]=yj1; }
|
|
|
|
arrysa[3][5]=200;
|
|
}
|
|
|
|
|
|
void ularc3(void)
|
|
{ int i,id;
|
|
ads_real q,dq;
|
|
|
|
ads_real dd3[5][3];
|
|
|
|
// dx=xka1-xka2;
|
|
// dy=yka1-yka2;
|
|
// d1=sqrt(dx*dx+dy*dy);
|
|
// qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
q=(kaq1+kaq2)/2;
|
|
q=q*pi314/180;
|
|
|
|
dd3[1][1]=xka1+karr*cos(q);
|
|
dd3[1][2]=yka1+karr*sin(q);
|
|
|
|
dq=kaq2-kaq1;
|
|
|
|
q=kaq1+dq/4;
|
|
q=q*pi314/180;
|
|
|
|
dd3[2][1]=xka1+karr*cos(q);
|
|
dd3[2][2]=yka1+karr*sin(q);
|
|
|
|
q=kaq1+3*dq/4;
|
|
q=q*pi314/180;
|
|
|
|
dd3[3][1]=xka1+karr*cos(q);
|
|
dd3[3][2]=yka1+karr*sin(q);
|
|
|
|
id=4;
|
|
itmen=0;
|
|
|
|
i=1;
|
|
aa1:ularc3a(dd3[i][1],dd3[i][2]);
|
|
|
|
if (itmen==3) return;
|
|
i=i+1;
|
|
if (i<id) goto aa1;
|
|
|
|
}
|
|
|
|
|
|
void ularc3a(ads_real x0,ads_real y0)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_real q0,q,dx,dy,d1,x1,y1;
|
|
|
|
ads_real d0,rr,q1,q2,dq;
|
|
|
|
ads_point p01,p02;
|
|
|
|
d0=2000;
|
|
|
|
arry[2][5]=0;
|
|
|
|
qjadu(xka1,yka1,x0,y0);
|
|
|
|
q0=qhcjc;
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
|
|
q=qhcjc*pi314/180;
|
|
p01[0]=x0+dx*cos(q); p01[1]=y0+dx*sin(q); p01[2]=0;
|
|
p02[0]=x0-dx*cos(q); p02[1]=y0-dx*sin(q); p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("ARC,CIRCLE"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("ARC,CIRCLE"), 8,(const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
if ((txtdxf0[0]==_T('C'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('R'))&&(txtdxf0[3]==_T('C'))&&(txtdxf0[4]==_T('L'))&&(txtdxf0[5]==_T('E'))) goto arc;
|
|
|
|
goto bb1;
|
|
|
|
arc:dx=x1-xka1; dy=y1-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>10*ds111) goto bb1;
|
|
|
|
d1=fabs(karr-rr);
|
|
|
|
if ((d1<d0)&&(d1>ds111)) {
|
|
|
|
d0=d1;
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
dq=q2-q1;
|
|
|
|
arry[2][1]=x1; arry[2][2]=y1; arry[2][3]=rr;
|
|
arry[2][4]=q1; arry[2][5]=6; arry[2][6]=q2;
|
|
|
|
if (dq>359) {
|
|
arry[2][4]=arry[1][4];
|
|
arry[2][6]=arry[1][6];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (d0<2000) {
|
|
itmen=3;
|
|
}
|
|
|
|
}
|
|
|
|
void ularc4(int i0)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_real x0,y0,q,dx,dy,d1,d2,x1,y1,x2,y2,rr0;
|
|
|
|
ads_real rr,q1,q2,q01,q02;
|
|
|
|
ads_point p01,p02;
|
|
|
|
x0=arry[i0][1]; y0=arry[i0][2];
|
|
rr0=arry[i0][3];
|
|
q01=arry[i0][4]-0.001;
|
|
q02=arry[i0][6]+0.001;
|
|
|
|
dx=arry[i0][3]+ds111;
|
|
p01[0]=x0-dx; p01[1]=y0-dx; p01[2]=0;
|
|
p02[0]=x0+dx; p02[1]=y0+dx; p02[2]=0;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE,ARC"), 8, _T("WALL*"), NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE,ARC"), 8,(const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
|
|
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
goto bb1;
|
|
|
|
lin:qjadu(x0,y0,x1,y1);
|
|
q=qhcjc;
|
|
if ((q>q01)&&(q<q02)||(q>q01-360)&&(q<q02-360)||(q>q01+360)&&(q<q02+360)) goto bblin;
|
|
|
|
qjadu(x0,y0,x2,y2);
|
|
q=qhcjc;
|
|
if ((q>q01)&&(q<q02)||(q>q01-360)&&(q<q02-360)||(q>q01+360)&&(q<q02+360)) goto bblin;
|
|
goto bb1;
|
|
|
|
bblin:dx=x1-x0; dy=y1-y0;
|
|
rr=sqrt(dx*dx+dy*dy);
|
|
|
|
d1=fabs(arry[1][3]-rr);
|
|
d2=fabs(arry[2][3]-rr);
|
|
if ((d1>2*ds111)&&(d2>2*ds111)) goto bb1;
|
|
|
|
dx=x2-x0; dy=y2-y0;
|
|
rr=sqrt(dx*dx+dy*dy);
|
|
|
|
d1=fabs(arry[1][3]-rr);
|
|
d2=fabs(arry[2][3]-rr);
|
|
|
|
if ((d1>2*ds111)&&(d2>2*ds111)) goto bb1;
|
|
|
|
ads_ssadd(en,ensspp0,ensspp0);
|
|
|
|
goto bb1;
|
|
|
|
arc:dx=x1-x0; dy=y1-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>10*ds111) goto bb1;
|
|
|
|
d1=fabs(rr0-rr);
|
|
if (d1>ds111) goto bb1;
|
|
|
|
q=q1*180/pi314;
|
|
|
|
if ((q>q01)&&(q<q02)||(q>q01-360)&&(q<q02-360)||(q>q01+360)&&(q<q02+360)) goto bb20;
|
|
goto bb1;
|
|
|
|
bb20: q=q2*180/pi314;
|
|
if ((q>q01)&&(q<q02)||(q>q01-360)&&(q<q02-360)||(q>q01+360)&&(q<q02+360)) goto bb30;
|
|
goto bb1;
|
|
|
|
bb30:ads_ssadd(en,ensspp0,ensspp0);
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ularcdote(void)
|
|
{
|
|
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_real x0,y0,q,dq,dx,dy,d1,x1,y1,rr1,rr2,rr0;
|
|
|
|
ads_real rr,q0,q1,q2;
|
|
|
|
ads_point p01,p02;
|
|
|
|
|
|
x0=arry[1][1]; y0=arry[1][2];
|
|
rr1=arry[1][3];
|
|
if (rr1>arry[2][3]) rr1=arry[2][3];
|
|
|
|
rr2=arry[1][3];
|
|
if (rr2<arry[2][3]) rr2=arry[2][3];
|
|
|
|
rr0=(rr2+rr1)/2;
|
|
|
|
whouy=(rr2-rr1)/2;
|
|
whouz=whouy;
|
|
|
|
|
|
//ads_printf(_T("\n arry[1][4]=%f,arry[1][6]=%f"),arry[1][4],arry[1][6]);
|
|
//ads_printf(_T("\n arry[2][4]=%f,arry[2][6]=%f"),arry[2][4],arry[2][6]);
|
|
|
|
|
|
dq=(arry[1][6]-arry[1][4]);
|
|
|
|
if (dq>355) {
|
|
q1=arry[2][4]; q2=arry[2][6];
|
|
goto aaa; }
|
|
|
|
|
|
dq=(arry[2][6]-arry[2][4]);
|
|
|
|
if (dq>355) {
|
|
q1=arry[1][4]; q2=arry[1][6];
|
|
goto aaa; }
|
|
|
|
|
|
|
|
|
|
q1=arry[1][4];
|
|
if (q1<arry[2][4]) q1=arry[2][4];
|
|
|
|
q2=arry[1][6];
|
|
if (q2>arry[2][6]) q2=arry[2][6];
|
|
|
|
// ads_printf(_T("\n q1=%f,q2=%f"),q1,q2);
|
|
|
|
if (q2<q1) q2=q2+360;
|
|
if (q2>q1+360) q2=q2-360;
|
|
|
|
aaa: arry[1][4]=q1; arry[1][6]=q2;
|
|
arry[2][4]=q1; arry[2][6]=q2;
|
|
|
|
dq=q2-q1;
|
|
if (dq<0.001) return;
|
|
q0=(q1+q2)/2;
|
|
|
|
|
|
dx=arry[1][3];
|
|
if (dx<arry[2][3]) dx=arry[2][3];
|
|
|
|
p01[0]=x0-dx; p01[1]=y0-dx; p01[2]=0;
|
|
p02[0]=x0+dx; p02[1]=y0+dx; p02[2]=0;
|
|
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("ARC,CIRCLE"), 8, LAY_AXIS, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("DOTE,")<<LAY_AXIS;
|
|
RBList mask(RTDXF0, _T("ARC,CIRCLE"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('D'))&&(txtnam8[1]==_T('O'))&&(txtnam8[2]==_T('T'))&&(txtnam8[3]==_T('E'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
if ((txtdxf0[0]==_T('C'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('R'))&&(txtdxf0[3]==_T('C'))&&(txtdxf0[4]==_T('L'))&&(txtdxf0[5]==_T('E'))) goto arc;
|
|
goto bb1;
|
|
|
|
arc:dx=x1-x0; dy=y1-y0;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>10*ds111) goto bb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
q=q0;
|
|
|
|
if ((q>q1)&&(q<q2)||(q>q1-360)&&(q<q2-360)||(q>q1+360)&&(q<q2+360)) goto bb20;
|
|
goto bb1;
|
|
|
|
bb20:if ((rr<rr1-0.001)||(rr>rr2+0.001)) goto bb1;
|
|
|
|
rr0=rr;
|
|
whouy=rr2-rr;
|
|
if (whouy<0) whouy=0;
|
|
|
|
whouz=rr-rr1;
|
|
if (whouz<0) whouz=0;
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
p01[0]=x0; p01[1]=y0; p01[2]=0;
|
|
|
|
//ads_printf(_T("\n arry[1][4]=%f,arry[1][6]=%f"),arry[1][4],arry[1][6]);
|
|
|
|
warc(p01,arry[1][4],arry[1][6],rr0);
|
|
|
|
}
|
|
|
|
|
|
void warc(ads_point p1,ads_real q1,ads_real q2,ads_real rr)
|
|
{ struct resbuf *rb;
|
|
ads_name en;
|
|
|
|
q1=q1*pi314/180;
|
|
q2=q2*pi314/180;
|
|
|
|
rb=ads_buildlist(RTDXF0,_T("ARC"),
|
|
6,_T("BYLAYER"),
|
|
8,_T("TDOTE"),
|
|
62,256,
|
|
10,p1,
|
|
40,rr,
|
|
50,q1,
|
|
51,q2,
|
|
39,3000.0,
|
|
-3,
|
|
1001,_T("TDOTE"),
|
|
1040,whouz,
|
|
1040,whouy,
|
|
NULL);
|
|
|
|
ads_entmake(rb);
|
|
ads_relrb(rb);
|
|
|
|
if (ads_entlast(en)==RTNORM) {
|
|
ads_ssadd(en,endd0,endd0);
|
|
}
|
|
|
|
}
|
|
|
|
void ulendd(void)
|
|
{ struct resbuf apps,*ebup,*rb;
|
|
ads_name en;
|
|
int typi,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,gs1,gs2,q1,q2,rr;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),buf[40]=_T("");
|
|
|
|
i=0;
|
|
if (ads_sslength(endd0,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:if (len==0) return;
|
|
|
|
ads_ssname(endd0,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0; gs1=0; gs2=0;
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f"),gs1,gs2);
|
|
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) {
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
// ads_printf(_T("\nx1=%f,y1=%f,q1=%f,q2=%f"),x1,y1,q1,q2);
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f"),gs1,gs2);
|
|
|
|
xka1=x1; yka1=y1; karr=rr;
|
|
kaq1=q1;
|
|
kaq2=q2;
|
|
|
|
ulddarc(1);
|
|
ulddarc(2);
|
|
|
|
q1=kaq1*pi314/180;
|
|
q2=kaq2*pi314/180;
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
if (typi==50) rb->resval.rreal=q1;
|
|
if (typi==51) rb->resval.rreal=q2;
|
|
}
|
|
|
|
ads_entmod(ebup);
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
goto bb1;
|
|
}
|
|
|
|
|
|
// ads_printf(_T("\nx1=%f,y1=%f,x2=%f,y2=%f"),x1,y1,x2,y2);
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f"),gs1,gs2);
|
|
|
|
xdz1=x1; ydz1=y1;
|
|
xdz2=x2; ydz2=y2;
|
|
|
|
uldda(1);
|
|
uldda(2);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==10) {
|
|
rb->resval.rpoint[0]=xdz1;
|
|
rb->resval.rpoint[1]=ydz1; }
|
|
|
|
if (typi==11) {
|
|
rb->resval.rpoint[0]=xdz2;
|
|
rb->resval.rpoint[1]=ydz2; }
|
|
}
|
|
|
|
ads_entmod(ebup);
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
|
|
void uldda(int it0)
|
|
{ struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi,itwa;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real dx,dy,d1,d0,x1,y1,x2,y2,xp1,yp1,xp2,yp2;
|
|
ads_real dd,q0,q,q1,q2,dq,xp0,yp0,rr;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p01,p02;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
|
|
d0=2000;
|
|
|
|
qjadu(xdz2,ydz2,xdz1,ydz1);
|
|
q0=qhcjc;
|
|
|
|
q=qhcjc*pi314/180;
|
|
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
xp1=xdz1+dx*cos(q); yp1=ydz1+dx*sin(q);
|
|
xp2=xdz1; yp2=ydz1;
|
|
|
|
if (it0==2) {
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
|
|
q=qhcjc*pi314/180;
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
xp1=xdz2+dx*cos(q); yp1=ydz2+dx*sin(q);
|
|
xp2=xdz2; yp2=ydz2;
|
|
}
|
|
|
|
|
|
p01[0]=xp1; p01[1]=yp1; p01[2]=0;
|
|
p02[0]=xp2; p02[1]=yp2; p02[2]=0;
|
|
|
|
// ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
RBList mask(RTDXF0,_T("LINE,ARC,CIRCLE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
itwa=0;
|
|
|
|
//modified by whl on 060323
|
|
//if (_tcsicmp(txtnam8, LAY_AXIS)==0) goto bbwa;
|
|
if (_tcsicmp(txtnam8, _T("DOTE"))==0||_tcsicmp(txtnam8, LAY_AXIS)==0) goto bbwa;
|
|
|
|
//modified by whl on 060323
|
|
//if (ads_wcmatch(txtnam8, _T("WALL*"))==RTNORM) {
|
|
if (ads_wcmatch(txtnam8, _T("WALL*"))==RTNORM||ads_wcmatch(txtnam8, LAY_WALL)==RTNORM) {
|
|
|
|
itwa=1;
|
|
goto bbwa; }
|
|
|
|
goto mbb1;
|
|
|
|
bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
if ((txtdxf0[0]==_T('C'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('R'))&&(txtdxf0[3]==_T('C'))&&(txtdxf0[4]==_T('L'))&&(txtdxf0[5]==_T('E'))) goto arc;
|
|
|
|
|
|
goto mbb1;
|
|
|
|
arc:if (itwa==1) goto mbb1;
|
|
|
|
if (rr<ds111) goto mbb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
arrysa[1][1]=xp1; arrysa[1][2]=yp1;
|
|
arrysa[1][3]=xp2; arrysa[1][4]=yp2;
|
|
arrysa[1][5]=0; arrysa[1][6]=0;
|
|
|
|
arrysa[2][1]=x1; arrysa[2][2]=y1;
|
|
arrysa[2][3]=rr; arrysa[2][4]=q1;
|
|
arrysa[2][6]=6; arrysa[2][6]=q2;
|
|
|
|
arrysa[3][5]=200;
|
|
|
|
qlajd();
|
|
|
|
if (arrysa[3][5]==0) {
|
|
|
|
pp[0]=arrysa[3][1];
|
|
pp[1]=arrysa[3][2];
|
|
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
|
|
}
|
|
|
|
goto mbb1;
|
|
|
|
lin:dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
// qjadu(xka1,yka1,xka2,yka2);
|
|
|
|
qjadu(xdz2,ydz2,xdz1,ydz1);
|
|
|
|
q1=qhcjc;
|
|
qjadu(x1,y1,x2,y2);
|
|
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>269) { dq=dq-180; goto qq1; }
|
|
|
|
if ((dq<30)||(dq>150)) goto mbb1;
|
|
|
|
if (itwa==1) {
|
|
|
|
if ((dq<89)||(dq>91)) goto mbb1;
|
|
|
|
}
|
|
|
|
qjadu(xp1,yp1,xp2,yp2);
|
|
q=(qhcjc-180)*pi314/180;
|
|
|
|
p1[0]=xp1+ds111*cos(q); p1[1]=yp1+ds111*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=xp2+ds111*cos(q); p2[1]=yp2+ds111*sin(q);
|
|
|
|
p3[0]=x1; p3[1]=y1;
|
|
p4[0]=x2; p4[1]=y2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (itwa==0) {
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
goto mbb1;
|
|
}
|
|
|
|
|
|
if ((d1<d0)&&(d1<ds111)) {
|
|
|
|
dx=pp[0]-x1; dy=pp[1]-y1;
|
|
dd=sqrt(dx*dx+dy*dy);
|
|
if (dd<10) goto mbb1;
|
|
|
|
dx=pp[0]-x2; dy=pp[1]-y2;
|
|
dd=sqrt(dx*dx+dy*dy);
|
|
if (dd<10) goto mbb1;
|
|
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
|
|
}
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (d0<2000) {
|
|
|
|
if (it0==1) {
|
|
|
|
xp2=xdz1; yp2=ydz1;
|
|
|
|
q=q0*pi314/180;
|
|
xdz1=xdz1+d0*cos(q);
|
|
ydz1=ydz1+d0*sin(q);
|
|
|
|
xp1=xdz1; yp1=ydz1;
|
|
|
|
if (d0>10) ulddc(it0,xp1,yp1,xp2,yp2);
|
|
|
|
}
|
|
|
|
if (it0==2) {
|
|
|
|
xp2=xdz2; yp2=ydz2;
|
|
|
|
q=(q0+180)*pi314/180;
|
|
xdz2=xdz2+d0*cos(q);
|
|
ydz2=ydz2+d0*sin(q);
|
|
|
|
xp1=xdz2; yp1=ydz2;
|
|
|
|
if (d0>10) ulddc(it0,xp1,yp1,xp2,yp2);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if (fabs(d0-2000)<1.0E-6) {
|
|
qjadu(xdz2,ydz2,xdz1,ydz1);
|
|
q=qhcjc*pi314/180;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
xp1=xdz1+dx*cos(q); yp1=ydz1+dx*sin(q);
|
|
xp2=xdz1; yp2=ydz1;
|
|
|
|
if (it0==2) {
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
|
|
q=qhcjc*pi314/180;
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
xp1=xdz2+dx*cos(q); yp1=ydz2+dx*sin(q);
|
|
xp2=xdz2; yp2=ydz2;
|
|
}
|
|
|
|
ulddb(it0,xp1,yp1,xp2,yp2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void ulddb(int it0,ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real dq0,q0,q,q1,q2,dq,x1,y1,rr,x2,y2,dx,dy,d1,d0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
ads_point p01,p02;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
qjadu(xdz2,ydz2,xdz1,ydz1);
|
|
q0=qhcjc;
|
|
|
|
d0=2000;
|
|
|
|
x1=(xp1+xp2)/2; y1=(yp1+yp2)/2;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x1+dx; p02[1]=y1+dx; p02[2]=0;
|
|
|
|
|
|
RBList mask(RTDXF0, _T("LINE,ARC,CIRCLE"), 8, _T("TDOTE"), NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
if ((txtdxf0[0]==_T('C'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('R'))&&(txtdxf0[3]==_T('C'))&&(txtdxf0[4]==_T('L'))&&(txtdxf0[5]==_T('E'))) goto arc;
|
|
|
|
goto mbb1;
|
|
|
|
arc: if (rr<ds111) goto mbb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
arrysa[1][1]=xp1; arrysa[1][2]=yp1;
|
|
arrysa[1][3]=xp2; arrysa[1][4]=yp2;
|
|
arrysa[1][5]=0; arrysa[1][6]=0;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
dq0=360*dx/2*pi314*rr;
|
|
|
|
arrysa[2][1]=x1; arrysa[2][2]=y1;
|
|
arrysa[2][3]=rr; arrysa[2][4]=q1-dq0;
|
|
arrysa[2][6]=6; arrysa[2][6]=q2+dq0;
|
|
|
|
arrysa[3][5]=200;
|
|
qlajd();
|
|
|
|
if (fabs(arrysa[3][5])<1.0E-6) {
|
|
|
|
pp[0]=arrysa[3][1];
|
|
pp[1]=arrysa[3][2];
|
|
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
goto mbb1;
|
|
|
|
lin:dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
q1=qhcjc;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>269) { dq=dq-180; goto qq1; }
|
|
|
|
if ((dq<30)||(dq>150)) goto mbb1;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
q=(qhcjc-180)*pi314/180;
|
|
p1[0]=x1+dx*cos(q); p1[1]=y1+dx*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=x2+dx*cos(q); p2[1]=y2+dx*sin(q);
|
|
|
|
p3[0]=xp1; p3[1]=yp1;
|
|
p4[0]=xp2; p4[1]=yp2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
}
|
|
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
|
|
if (d0<2000) {
|
|
|
|
if (it0==1) {
|
|
|
|
q=q0*pi314/180;
|
|
xdz1=xdz1+d0*cos(q);
|
|
ydz1=ydz1+d0*sin(q);
|
|
|
|
}
|
|
|
|
if (it0==2) {
|
|
q=(q0+180)*pi314/180;
|
|
xdz2=xdz2+d0*cos(q);
|
|
ydz2=ydz2+d0*sin(q);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void ulddc(int it0,ads_real xp1,ads_real yp1,ads_real xp2,ads_real yp2)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real rr,q0,q,q1,q2,dq,x1,y1,x2,y2,dx,dy,d1,d0,xp0,yp0;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
ads_point p01,p02;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
qjadu(xdz2,ydz2,xdz1,ydz1);
|
|
q0=qhcjc;
|
|
|
|
d0=2000;
|
|
|
|
x1=(xp1+xp2)/2; y1=(yp1+yp2)/2;
|
|
|
|
dx=xp1-xp2; dy=yp1-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<10) return;
|
|
|
|
p01[0]=x1-d1; p01[1]=y1-d1; p01[2]=0;
|
|
p02[0]=x1+d1; p02[1]=y1+d1; p02[2]=0;
|
|
|
|
|
|
RBList mask(RTDXF0,_T("LINE,ARC"),8,_T("TDOTE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
goto mbb1;
|
|
|
|
arc:if (rr<ds111) goto mbb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
dq=360*dx/(2*pi314*rr);
|
|
q1=q1-dq;
|
|
q2=q2+dq;
|
|
|
|
arrysa[1][1]=xp1; arrysa[1][2]=yp1;
|
|
arrysa[1][3]=xp2; arrysa[1][4]=yp2;
|
|
arrysa[1][5]=0; arrysa[1][6]=0;
|
|
|
|
arrysa[2][1]=x1; arrysa[2][2]=y1;
|
|
arrysa[2][3]=rr; arrysa[2][4]=q1;
|
|
arrysa[2][6]=6; arrysa[2][6]=q2;
|
|
|
|
arrysa[3][5]=200;
|
|
|
|
qlajd();
|
|
|
|
if (fabs(arrysa[3][5])<1.0E-6) {
|
|
|
|
pp[0]=arrysa[3][1];
|
|
pp[1]=arrysa[3][2];
|
|
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
|
|
}
|
|
|
|
goto mbb1;
|
|
|
|
lin:dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
q1=qhcjc;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>269) { dq=dq-180; goto qq1; }
|
|
|
|
if ((dq<30)||(dq>150)) goto mbb1;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
q=(qhcjc-180)*pi314/180;
|
|
p1[0]=x1+dx*cos(q); p1[1]=y1+dx*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=x2+dx*cos(q); p2[1]=y2+dx*sin(q);
|
|
|
|
p3[0]=xp1; p3[1]=yp1;
|
|
p4[0]=xp2; p4[1]=yp2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
dx=pp[0]-xp2; dy=pp[1]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=pp[0]; yp0=pp[1];
|
|
}
|
|
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
|
|
if (d0<2000) {
|
|
|
|
if (it0==1) {
|
|
xdz1=xp0;
|
|
ydz1=yp0;
|
|
}
|
|
|
|
if (it0==2) {
|
|
xdz2=xp0;
|
|
ydz2=yp0;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void qlajd(void)
|
|
{ ads_real q01,q02;
|
|
ads_point pa,pb,pdd,pee,ppjd;
|
|
ads_real dx,dy,d,d0,x1,y1,q,rr;
|
|
ads_real xb1,yb1,xb2,yb2,xj1,yj1,xj2,yj2;
|
|
|
|
pa[2]=0; pb[2]=0;
|
|
pdd[2]=0; pee[2]=0;
|
|
|
|
pa[0]=arrysa[1][1];
|
|
pa[1]=arrysa[1][2];
|
|
pb[0]=arrysa[1][3];
|
|
pb[1]=arrysa[1][4];
|
|
|
|
xb1=arrysa[1][1];
|
|
yb1=arrysa[1][2];
|
|
|
|
xb2=arrysa[1][3];
|
|
yb2=arrysa[1][4];
|
|
|
|
d0=arrysa[3][4];
|
|
|
|
q01=arrysa[2][4]; q02=arrysa[2][6];
|
|
|
|
if (q01>q02) q01=q01-360;
|
|
|
|
q01=q01-0.01;
|
|
q02=q02+0.01;
|
|
|
|
qjadu(pa[0],pa[1],pb[0],pb[1]);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
x1=arrysa[2][1];
|
|
y1=arrysa[2][2];
|
|
rr=arrysa[2][3];
|
|
pdd[0]=x1; pdd[1]=y1;
|
|
pee[0]=x1+rr*cos(q);
|
|
pee[1]=y1+rr*sin(q);
|
|
|
|
if (ads_inters(pa,pb,pdd,pee,0,ppjd)==RTNORM) {
|
|
dx=x1-ppjd[0];
|
|
dy=y1-ppjd[1];
|
|
d=sqrt(dx*dx+dy*dy);
|
|
if (d>rr) return;
|
|
|
|
dx=rr*rr-d*d;
|
|
if (dx<0) dx=0;
|
|
|
|
dx=sqrt(dx);
|
|
q=qhcjc*pi314/180;
|
|
xj1=ppjd[0]+dx*cos(q);
|
|
yj1=ppjd[1]+dx*sin(q);
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
xj2=ppjd[0]+dx*cos(q);
|
|
yj2=ppjd[1]+dx*sin(q);
|
|
qjadu(x1,y1,xj1,yj1);
|
|
|
|
if ((qhcjc>q01)&&(qhcjc<q02)||(qhcjc>q01-360)&&(qhcjc<q02-360)||(qhcjc>q01+360)&&(qhcjc<q02+360)) goto arc0a;
|
|
goto arc0b;
|
|
|
|
arc0a:if ((xj1<xb1-jsjdu)&&(xj1<xb2-jsjdu)||(xj1>xb1+jsjdu)&&(xj1>xb2+jsjdu)) goto arc0b;
|
|
if ((yj1<yb1-jsjdu)&&(yj1<yb2-jsjdu)||(yj1>yb1+jsjdu)&&(yj1>yb2+jsjdu)) goto arc0b;
|
|
|
|
arrysa[3][1]=xj1;
|
|
arrysa[3][2]=yj1;
|
|
arrysa[3][5]=0;
|
|
|
|
|
|
arc0b:qjadu(x1,y1,xj2,yj2);
|
|
if ((qhcjc>q01)&&(qhcjc<q02)||(qhcjc>q01-360)&&(qhcjc<q02-360)||(qhcjc>q01+360)&&(qhcjc<q02+360)) goto arc0c;
|
|
return;
|
|
|
|
arc0c:if ((xj2<xb1-jsjdu)&&(xj2<xb2-jsjdu)||(xj2>xb1+jsjdu)&&(xj2>xb2+jsjdu)) return;
|
|
if ((yj2<yb1-jsjdu)&&(yj2<yb2-jsjdu)||(yj2>yb1+jsjdu)&&(yj2>yb2+jsjdu)) return;
|
|
|
|
|
|
arrysa[3][1]=xj2;
|
|
arrysa[3][2]=yj2;
|
|
arrysa[3][5]=0;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void ulddarc(int it0)
|
|
{ struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi,itwa;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real dx,dy,d1,d0,x1,y1,x2,y2,xp1,yp1,xp2,yp2;
|
|
ads_real q,q1,q2,dq,xp0,yp0,rr,ds;
|
|
ads_real q01,q02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p01,p02;
|
|
|
|
|
|
d0=2000;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
ds=2*pi314*karr;
|
|
|
|
if (ds<0.1) return;
|
|
|
|
dq=360*dx/ds;
|
|
|
|
|
|
q01=kaq1;
|
|
q02=kaq1-dq;
|
|
|
|
if (it0==2) {
|
|
q01=kaq2;
|
|
q02=kaq2+dq;
|
|
}
|
|
|
|
q=q01*pi314/180;
|
|
xp1=xka1+karr*cos(q);
|
|
yp1=yka1+karr*sin(q);
|
|
|
|
q=q02*pi314/180;
|
|
xp2=xka1+karr*cos(q);
|
|
yp2=yka1+karr*sin(q);
|
|
|
|
if (it0==1) {
|
|
q02=kaq1;
|
|
q01=kaq1-dq;
|
|
}
|
|
|
|
// hlin(xp1,yp1,xp2,yp2,7);
|
|
|
|
x1=xp1; x2=xp2;
|
|
if (x1>x2) { x1=xp2; x2=xp1; }
|
|
|
|
y1=yp1; y2=yp2;
|
|
if (y1>y2) { y1=yp2; y2=yp1; }
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x2+dx; p02[1]=y2+dx; p02[2]=0;
|
|
|
|
// ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
|
|
RBList mask(RTDXF0,_T("LINE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
itwa=0;
|
|
|
|
//modified by whl on 060323
|
|
//if (_tcsicmp(txtnam8, LAY_AXIS)==0) goto bbwa;
|
|
if (_tcsicmp(txtnam8, _T("DOTE"))==0||_tcsicmp(txtnam8, LAY_AXIS)==0) goto bbwa;
|
|
|
|
if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) {
|
|
itwa=1;
|
|
goto bbwa;
|
|
}
|
|
|
|
|
|
// if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) {
|
|
// itwa=1;
|
|
// goto bbwa; }
|
|
|
|
goto mbb1;
|
|
|
|
bbwa:
|
|
//if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
//goto mbb1;
|
|
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
if (itwa==1) {
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
q=(qhcjc-180)*pi314/180;
|
|
x1=x1+dx*cos(q);
|
|
y1=y1+dx*sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
x2=x2+dx*cos(q);
|
|
y2=y2+dx*sin(q);
|
|
}
|
|
|
|
arrysa[1][1]=x1; arrysa[1][2]=y1;
|
|
arrysa[1][3]=x2; arrysa[1][4]=y2;
|
|
arrysa[1][5]=0; arrysa[1][6]=0;
|
|
|
|
arrysa[2][1]=xka1; arrysa[2][2]=yka1;
|
|
arrysa[2][3]=karr; arrysa[2][4]=q01;
|
|
arrysa[2][6]=6; arrysa[2][6]=q02;
|
|
|
|
arrysa[3][5]=200;
|
|
|
|
qlajd();
|
|
|
|
// ads_printf(_T("\n arrysa[3][5]=%f,q01=%f,q02=%f"),arrysa[3][5],q01,q02);
|
|
|
|
if (fabs(arrysa[3][5])<1.0E-6) {
|
|
|
|
dx=arrysa[3][1]-xp1; dy=arrysa[3][2]-yp1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
// ads_printf(_T("\n itwa=%d,d1=%f"),itwa,d1);
|
|
// hlin(arrysa[3][1],arrysa[3][2],arrysa[3][1]+400,arrysa[3][2]+400,3);
|
|
// hlin(xp1,yp1,xp1+400,yp1+400,2);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=arrysa[3][1]; yp0=arrysa[3][2];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (d0<2000) {
|
|
|
|
if (it0==1) {
|
|
qjadu(xka1,yka1,xp0,yp0);
|
|
kaq1=qhcjc;
|
|
|
|
if (kaq1>kaq2) kaq1=kaq1-360;
|
|
if (kaq1<kaq2-360) kaq1=kaq1+360;
|
|
}
|
|
|
|
if (it0==2) {
|
|
|
|
qjadu(xka1,yka1,xp0,yp0);
|
|
kaq2=qhcjc;
|
|
|
|
if (kaq1>kaq2) kaq2=kaq2+360;
|
|
if (kaq1<kaq2-360) kaq2=kaq2-360;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (d0==2000) ulddarcc(it0);
|
|
|
|
|
|
}
|
|
|
|
|
|
void ulddarcc(int it0)
|
|
{ struct resbuf *ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi,itwa;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real dx,dy,d1,d0,x1,y1,x2,y2,xp1,yp1,xp2,yp2;
|
|
ads_real q,q1,q2,dq,xp0,yp0,rr,ds;
|
|
ads_real q01,q02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
ads_point p01,p02;
|
|
|
|
|
|
d0=2000;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
ds=2*pi314*karr;
|
|
|
|
if (ds<0.1) return;
|
|
|
|
dq=360*dx/ds;
|
|
|
|
q01=kaq1-dq;
|
|
q02=kaq1;
|
|
|
|
if (it0==2) {
|
|
q01=kaq2;
|
|
q02=kaq2+dq; }
|
|
|
|
q=q01*pi314/180;
|
|
xp1=xka1+karr*cos(q);
|
|
yp1=yka1+karr*sin(q);
|
|
|
|
q=q02*pi314/180;
|
|
xp2=xka1+karr*cos(q);
|
|
yp2=yka1+karr*sin(q);
|
|
|
|
if (it0==1) {
|
|
q=q02*pi314/180;
|
|
xp1=xka1+karr*cos(q);
|
|
yp1=yka1+karr*sin(q);
|
|
|
|
q=q01*pi314/180;
|
|
xp2=xka1+karr*cos(q);
|
|
yp2=yka1+karr*sin(q);
|
|
}
|
|
|
|
// hlin(xp1,yp1,xp2,yp2,7);
|
|
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
x1=(xp1+xp2)/2; y1=(yp1+yp2)/2;
|
|
|
|
p01[0]=x1-dx; p01[1]=y1-dx; p01[2]=0;
|
|
p02[0]=x1+dx; p02[1]=y1+dx; p02[2]=0;
|
|
|
|
// ul112l(p01[0],p01[1],p02[0],p02[1],ds111);
|
|
|
|
|
|
RBList mask(RTDXF0,_T("LINE"),8,_T("TDOTE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
itwa=0;
|
|
|
|
//if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) goto bbwa;
|
|
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
dx=dswa500;
|
|
if (dx<whou) dx=whou;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
q=(qhcjc+180)*pi314/180;
|
|
x1=x1+dx*cos(q); y1=y1+dx*sin(q);
|
|
q=qhcjc*pi314/180;
|
|
x2=x2+dx*cos(q); y2=y2+dx*sin(q);
|
|
|
|
arrysa[1][1]=x1; arrysa[1][2]=y1;
|
|
arrysa[1][3]=x2; arrysa[1][4]=y2;
|
|
arrysa[1][5]=0; arrysa[1][6]=0;
|
|
|
|
arrysa[2][1]=xka1; arrysa[2][2]=yka1;
|
|
arrysa[2][3]=karr; arrysa[2][4]=q01;
|
|
arrysa[2][6]=6; arrysa[2][6]=q02;
|
|
|
|
arrysa[3][5]=200;
|
|
|
|
qlajd();
|
|
|
|
// ads_printf(_T("\n arrysa[3][5]=%f,q01=%f,q02=%f"),arrysa[3][5],q01,q02);
|
|
|
|
if (fabs(arrysa[3][5])<1.0E-6) {
|
|
|
|
dx=arrysa[3][1]-xp2; dy=arrysa[3][2]-yp2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<d0) {
|
|
d0=d1;
|
|
xp0=arrysa[3][1]; yp0=arrysa[3][2];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (d0<2000) {
|
|
|
|
if (it0==1) {
|
|
qjadu(xka1,yka1,xp0,yp0);
|
|
kaq1=qhcjc;
|
|
|
|
if (kaq1>kaq2) kaq1=kaq1-360;
|
|
if (kaq1<kaq2-360) kaq1=kaq1+360;
|
|
}
|
|
|
|
if (it0==2) {
|
|
|
|
qjadu(xka1,yka1,xp0,yp0);
|
|
kaq2=qhcjc;
|
|
|
|
if (kaq1>kaq2) kaq2=kaq2+360;
|
|
if (kaq1<kaq2-360) kaq2=kaq2-360;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void ulenddzf(void)
|
|
{ struct resbuf apps,*ebup,*rb;
|
|
ads_name en;
|
|
int typi,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,gs1,gs2,q1,q2,rr;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),buf[40]=_T("");
|
|
|
|
i=0;
|
|
if (ads_sslength(endd0,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:if (len==0) return;
|
|
|
|
ads_ssname(endd0,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0; gs1=0; gs2=0;
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f"),gs1,gs2);
|
|
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) {
|
|
|
|
xka1=x1; yka1=y1; karr=rr;
|
|
kaq1=q1;
|
|
kaq2=q2;
|
|
|
|
ularczf();
|
|
|
|
goto bb1;
|
|
}
|
|
|
|
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) {
|
|
|
|
xdz1=x1; ydz1=y1;
|
|
xdz2=x2; ydz2=y2;
|
|
|
|
dx=xdz1-xdz2; dy=ydz1-ydz2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1<ds111) { ads_entdel(en); goto bb1; }
|
|
|
|
ulinzf();
|
|
|
|
goto bb1;
|
|
}
|
|
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
|
|
void ulinzf(void)
|
|
{ struct resbuf apps,*ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi,igw,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2;
|
|
ads_real q,gs1,gs2;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),buf[40]=_T("");
|
|
ads_point p01,p02;
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
igw=0;
|
|
|
|
|
|
p01[0]=xdz1; p01[1]=ydz1; p01[2]=0;
|
|
p02[0]=xdz2; p02[1]=ydz2; p02[2]=0;
|
|
|
|
|
|
RBList mask(RTDXF0,_T("LINE"),8,_T("TDOTE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0; gs1=0; gs2=0;
|
|
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto bb1;
|
|
|
|
//lin:
|
|
if ((fabs(xdz1-x1)<1.0E-6)
|
|
&&(fabs(ydz1-y1)<1.0E-6)
|
|
&&(fabs(xdz2-x2)<1.0E-6)
|
|
&&(fabs(ydz2-y2)<1.0E-6)) {
|
|
igw=igw+1;
|
|
if (igw>=2) ads_entdel(en);
|
|
goto bb1; }
|
|
|
|
qjadu(xdz1,ydz1,xdz2,ydz2);
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
p1[0]=x1+ds111*cos(q); p1[1]=y1+ds111*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p2[0]=x1+ds111*cos(q); p2[1]=y1+ds111*sin(q);
|
|
|
|
p3[0]=xdz1; p3[1]=ydz1;
|
|
p4[0]=xdz2; p4[1]=ydz2;
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto d11;
|
|
|
|
goto bb1;
|
|
|
|
d11:q=(qhcjc+90)*pi314/180;
|
|
p1[0]=x2+ds111*cos(q); p1[1]=y2+ds111*sin(q);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
p2[0]=x2+ds111*cos(q); p2[1]=y2+ds111*sin(q);
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) ads_entdel(en);
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
void ularczf(void)
|
|
{ struct resbuf apps,*ebup,*rb;
|
|
ads_name ss1,en;
|
|
|
|
int typi,igw,it;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,q01,q02;
|
|
ads_real q1,q2,rr,gs1,gs2;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T(""),buf[40]=_T("");
|
|
ads_point p01,p02;
|
|
|
|
igw=0;
|
|
|
|
p01[0]=xka1-karr; p01[1]=yka1-karr; p01[2]=0;
|
|
p02[0]=xka1+karr; p02[1]=yka1+karr; p02[2]=0;
|
|
|
|
|
|
RBList mask(RTDXF0,_T("ARC"),8,_T("TDOTE"),NULL);
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
|
|
_tcscpy(buf,_T("TDOTE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
|
|
ebup=ads_entgetx(en,&apps);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
it=0; gs1=0; gs2=0;
|
|
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
|
|
//if ((txtnam8[0]==_T('T'))&&(txtnam8[1]==_T('D'))&&(txtnam8[2]==_T('O'))&&(txtnam8[3]==_T('T'))&&(txtnam8[4]==_T('E'))) goto bbwa;
|
|
|
|
// goto bb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arc;
|
|
|
|
// goto bb1;
|
|
|
|
//arc:
|
|
if ((fabs(xka1-x1)<1.0E-6)
|
|
&&(fabs(yka1-y1)<1.0E-6)
|
|
&&(fabs(karr-rr)<1.0E-6)
|
|
&&(fabs(kaq1-q1)<1.0E-6)
|
|
&&(fabs(kaq2-q2)<1.0E-6)) {
|
|
igw=igw+1;
|
|
if (igw>=2) ads_entdel(en);
|
|
goto bb1; }
|
|
|
|
|
|
if (fabs(xka1-x1)>1.0E-6 ||
|
|
fabs(yka1-y1)>1.0E-6 ||
|
|
fabs(karr-rr)>1.0E-6) goto bb1;
|
|
q01=kaq1*180/pi314;
|
|
q02=kaq2*180/pi314;
|
|
if (q02<q01) q02=q02+360;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
if ((q1<q01)||(q2>q02)) goto bb1;
|
|
|
|
ads_entdel(en);
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ulin01(void)
|
|
{
|
|
// int i;
|
|
ads_real ds,x1,y1,x2,y2,dx,dy,d1,d2,x0,y0,q;
|
|
// TCHAR zf[40];
|
|
|
|
ads_ssadd(NULL,NULL,ensspp0);
|
|
ads_ssadd(entch,ensspp0,ensspp0);
|
|
|
|
itmen=0;
|
|
|
|
// strlin();
|
|
// ds=xka2; xka2=xka1; xka1=ds;
|
|
// ds=yka2; yka2=yka1; yka1=ds;
|
|
// strlin();
|
|
|
|
x1=xka1; y1=yka1;
|
|
x2=xka2; y2=yka2;
|
|
|
|
// if (ientd==1) ads_printf(_T("\n itmen=%d"),itmen);
|
|
|
|
if (itmen==0) {
|
|
|
|
ulin3();
|
|
|
|
//ads_printf(_T("\nulin3 itmen=%d"),itmen);
|
|
|
|
if (itmen==3) {
|
|
|
|
strlin();
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
strlin();
|
|
|
|
// hlin(x1,y1,x2,y2,2);
|
|
// hlin(xka1,yka1,xka2,yka2,2);
|
|
// ads_getstring(5,NULL,zf);
|
|
goto ssd0;
|
|
}
|
|
|
|
goto ssd;
|
|
}
|
|
|
|
goto ssd;
|
|
|
|
ssd0:qjadu(x1,y1,x2,y2);
|
|
|
|
dx=800000000.0;
|
|
q=(qhcjc-180)*pi314/180;
|
|
x0=x1+dx*cos(q);
|
|
y0=y1+dx*sin(q);
|
|
|
|
dx=x0-xka1; dy=y0-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x0-xka2; dy=y0-yka2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d1>d2) {
|
|
ds=xka2; xka2=xka1; xka1=ds;
|
|
ds=yka2; yka2=yka1; yka1=ds;
|
|
}
|
|
|
|
arry[1][1]=x1; arry[1][2]=y1;
|
|
arry[1][3]=x2; arry[1][4]=y2;
|
|
arry[1][5]=0; arry[1][6]=0;
|
|
|
|
arry[2][1]=xka1; arry[2][2]=yka1;
|
|
arry[2][3]=xka2; arry[2][4]=yka2;
|
|
arry[2][5]=0; arry[2][6]=0;
|
|
|
|
iarry=3;
|
|
|
|
//ads_printf(_T("\narry[1][1]=%f,arry[1][2]=%f,arry[1][3]=%f,arry[1][4]=%f"),arry[1][1],arry[1][2],arry[1][3],arry[1][4]);
|
|
//ads_printf(_T("\narry[2][1]=%f,arry[2][2]=%f,arry[2][3]=%f,arry[2][4]=%f"),arry[2][1],arry[2][2],arry[2][3],arry[2][4]);
|
|
|
|
ulin4();
|
|
|
|
// icolo=icolo+1;
|
|
|
|
// if (ientd==1) {
|
|
// for (i=1;i<iarry;i++) {
|
|
// if (i==1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],2);
|
|
// if (i>1) hlin(arry[i][1],arry[i][2],arry[i][3],arry[i][4],7);
|
|
// ads_printf(_T("\ni=%d,arry[i][1]=%f,%f,%f,%f"),i,arry[i][1],arry[i][2],arry[i][3],arry[i][4]);
|
|
// ads_getstring(5,NULL,zf); }
|
|
// }
|
|
|
|
ulin5();
|
|
|
|
// 将以转换的墙端点选上 ensspp0
|
|
|
|
ulin6dd();
|
|
|
|
ssd:ssdelenpp0();
|
|
|
|
ads_ssfree(ensspp0);
|
|
|
|
}
|
|
|
|
|
|
void tzhatdc(void)
|
|
{ struct resbuf *ebup,*rbp;
|
|
ads_name en;
|
|
int typi;
|
|
|
|
Adesk::Int32 len,i;
|
|
|
|
ads_real x1,y1,x2,y2,q1,q2,rr;
|
|
|
|
TCHAR zf[40]=_T("");
|
|
|
|
i=0;
|
|
|
|
if (ads_sslength(entdwa,&len)==RTNORM) goto bbb;
|
|
|
|
return;
|
|
|
|
bbb:if (len==0) return;
|
|
|
|
ads_ssname(entdwa,i,en);
|
|
ebup=ads_entget(en);
|
|
if (ebup==NULL) goto bb1;
|
|
|
|
q1=0; q2=2*pi314;
|
|
|
|
for (rbp=ebup;rbp!=NULL;rbp=rbp->rbnext) {
|
|
typi=rbp->restype;
|
|
if (typi==0) _tcscpy(zf,rbp->resval.rstring);
|
|
|
|
if (typi==40) rr=rbp->resval.rreal;
|
|
if (typi==50) q1=rbp->resval.rreal;
|
|
if (typi==51) q2=rbp->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rbp->resval.rpoint[0];
|
|
y1=rbp->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rbp->resval.rpoint[0];
|
|
y2=rbp->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rbp);
|
|
|
|
if ((zf[0]==_T('L'))&&(zf[1]==_T('I'))&&(zf[2]==_T('N'))&&(zf[3]==_T('E'))) goto lin;
|
|
if ((zf[0]==_T('A'))&&(zf[1]==_T('R'))&&(zf[2]==_T('C'))) goto arc;
|
|
goto bb1;
|
|
|
|
arc:warcTDWA(x1,y1,q1,q2,rr);
|
|
ads_entdel(en);
|
|
|
|
goto bb1;
|
|
|
|
lin:wlinTDWA(x1,y1,x2,y2);
|
|
ads_entdel(en);
|
|
|
|
bb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
}
|
|
|
|
void wlinTDWA(ads_real x1,ads_real y1,ads_real x2,ads_real y2)
|
|
{
|
|
struct resbuf *rb;
|
|
|
|
ads_point p1,p2;
|
|
|
|
p1[0]=x1; p1[1]=y1; p1[2]=0;
|
|
p2[0]=x2; p2[1]=y2; p2[2]=0;
|
|
|
|
rb=ads_buildlist(RTDXF0,_T("LINE"),10,p1,11,p2,
|
|
6,_T("BYLAYER"),
|
|
8,_T("TDWALL"),
|
|
62,256,
|
|
39,0.0,
|
|
NULL);
|
|
|
|
ads_entmake(rb);
|
|
ads_relrb(rb);
|
|
|
|
}
|
|
|
|
|
|
void warcTDWA(ads_real x1,ads_real y1,ads_real q1,ads_real q2,ads_real rr)
|
|
{ struct resbuf *rb;
|
|
|
|
ads_point p1;
|
|
|
|
p1[0]=x1; p1[1]=y1; p1[2]=0;
|
|
|
|
rb=ads_buildlist(RTDXF0,_T("ARC"),
|
|
6,_T("BYLAYER"),
|
|
8,_T("TDWALL"),
|
|
62,256,
|
|
10,p1,
|
|
40,rr,
|
|
50,q1,
|
|
51,q2,
|
|
39,0.0,
|
|
NULL);
|
|
|
|
ads_entmake(rb);
|
|
ads_relrb(rb);
|
|
|
|
}
|
|
|
|
|
|
void ulin6dd(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
|
|
int typi,j;
|
|
Adesk::Int32 i,len;
|
|
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,q1,dq,q;
|
|
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
ads_point p1,p2,p3,p4,pp;
|
|
|
|
p1[2]=0; p2[2]=0;
|
|
p3[2]=0; p4[2]=0;
|
|
|
|
|
|
if (iarry<3) return;
|
|
|
|
xwb1=arry[1][1]; ywb1=arry[1][2];
|
|
xwb2=arry[1][1]; ywb2=arry[1][2];
|
|
|
|
xwbmin(1);
|
|
xwbmin(2);
|
|
xwbmin(iarry-1);
|
|
|
|
p01[0]=xwb1; p01[1]=ywb1; p01[2]=0;
|
|
p02[0]=xwb2; p02[1]=ywb2; p02[2]=0;
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0,_T("LINE"),8,_T("WALL*"),NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0,_T("LINE"),8,(const TCHAR*)sLayer,NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto bbb;
|
|
return;
|
|
|
|
bbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
|
|
// goto mbb1;
|
|
|
|
//lin:
|
|
dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
qjadu(arry[1][1],arry[1][2],arry[1][3],arry[1][4]);
|
|
q1=qhcjc;
|
|
|
|
qjadu(x1,y1,x2,y2);
|
|
dq=q1-qhcjc;
|
|
if (dq<0) dq=-dq;
|
|
qq1:if (dq>179) { dq=dq-180; goto qq1; }
|
|
if (dq<2) goto mbb1;
|
|
|
|
q=(qhcjc+180)*pi314/180;
|
|
p1[0]=x1+cos(q); p1[1]=y1+sin(q);
|
|
|
|
q=qhcjc*pi314/180;
|
|
p2[0]=x2+cos(q); p2[1]=y2+sin(q);
|
|
|
|
p3[0]=arry[1][1]; p3[1]=arry[1][2];
|
|
p4[0]=arry[1][3]; p4[1]=arry[1][4];
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) goto lin2;
|
|
goto mbb1;
|
|
|
|
lin2:dx=x1-pp[0]; dy=y1-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x2-pp[0]; dy=y2-pp[1];
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
if ((d1>ds111)&&(d2>ds111)) goto mbb1;
|
|
|
|
j=2;
|
|
|
|
jjj: p3[0]=arry[j][1]; p3[1]=arry[j][2];
|
|
p4[0]=arry[j][3]; p4[1]=arry[j][4];
|
|
|
|
if (ads_inters(p1,p2,p3,p4,1,pp)==RTNORM) {
|
|
|
|
// dx=arry[j][1]-pp[0]; dy=arry[j][2]-pp[1];
|
|
// d1=sqrt(dx*dx+dy*dy);
|
|
// dx=arry[j][3]-pp[0]; dy=arry[j][4]-pp[1];
|
|
// d2=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x1-pp[0]; dy=y1-pp[1];
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x2-pp[0]; dy=y2-pp[1];
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1<ds111)||(d2<ds111)) {
|
|
ads_ssadd(en,ensspp0,ensspp0);
|
|
goto mbb1;
|
|
}
|
|
}
|
|
|
|
j=j+1;
|
|
if (j<iarry) goto jjj;
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto bbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
}
|
|
|
|
|
|
void xwbmin(int i)
|
|
{
|
|
|
|
if (xwb1>arry[i][1]) xwb1=arry[i][1];
|
|
if (ywb1>arry[i][2]) ywb1=arry[i][2];
|
|
if (xwb1>arry[i][3]) xwb1=arry[i][3];
|
|
if (ywb1>arry[i][4]) ywb1=arry[i][4];
|
|
|
|
if (xwb2<arry[i][1]) xwb2=arry[i][1];
|
|
if (ywb2<arry[i][2]) ywb2=arry[i][2];
|
|
if (xwb2<arry[i][3]) xwb2=arry[i][3];
|
|
if (ywb2<arry[i][4]) ywb2=arry[i][4];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void yyyq(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
int typi,itn,itm;
|
|
Adesk::Int32 i,len;
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,rr0,q;
|
|
ads_real q1,q2,q12,rr,xd1,yd1;
|
|
ads_real q01,q02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
itn=0;
|
|
|
|
sta0:itn=itn+1;
|
|
if (itn>300) return;
|
|
|
|
// ads_printf(_T("\n itn=%d"),itn);
|
|
|
|
if (kaq2>kaq1+359.99) return;
|
|
|
|
itm=0;
|
|
|
|
rr0=karr;
|
|
q=kaq2*pi314/180;
|
|
|
|
xd1=xka1+rr0*cos(q);
|
|
yd1=yka1+rr0*sin(q);
|
|
|
|
q01=kaq1-0.001;
|
|
q02=kaq2+0.001;
|
|
|
|
p01[2]=0; p02[2]=0;
|
|
|
|
rr=10*ds111;
|
|
p01[0]=xd1-rr; p01[1]=yd1-rr;
|
|
p02[0]=xd1+rr; p02[1]=yd1+rr;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE,ARC"), 8, _T("WALL*"),NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE,ARC"), 8,(const TCHAR*)sLayer,NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arcjd;
|
|
goto mbb1;
|
|
|
|
arcjd:dx=xka1-x1;
|
|
dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>ds111) goto mbb1;
|
|
|
|
dx=fabs(karr-rr);
|
|
if (dx>ds111) goto mbb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
|
|
|
|
if ((q1>q01)&&(q1<q02)||(q1>q01-360)&&(q1<q02-360)||(q1>q01+360)&&(q1<q02+360)) goto acc1;
|
|
goto mbb1;
|
|
|
|
acc1:if ((q2>q01)&&(q2<q02)||(q2>q01-360)&&(q2<q02-360)||(q2>q01+360)&&(q2<q02+360)) {
|
|
q12=(q1+q2)/2;
|
|
if ((q12>q01)&&(q12<q02)||(q12>q01-360)&&(q12<q02-360)||(q12>q01+360)&&(q12<q02+360)) goto mbb1;
|
|
}
|
|
|
|
// ads_printf(_T("\nAAA arc kaq1=%f,kaq2=%f"),kaq1,kaq2);
|
|
// ads_printf(_T("\nAAA arc q1=%f,q2=%f"),q1,q2);
|
|
|
|
if (q2<kaq2) q2=q2+360;
|
|
if (q2>kaq1+360) q2=q2-360;
|
|
|
|
kaq2=q2;
|
|
ads_ssfree(ss1);
|
|
|
|
goto sta0;
|
|
|
|
|
|
lin:dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
if ((d1<dswa500)||(d1<whou)) {
|
|
|
|
dx=xd1-x1; dy=yd1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xd1-x2; dy=yd1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>10*ds111)&&(d2>10*ds111)) goto mbb1;
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
|
|
itm=1;
|
|
|
|
if (d2<d1) {
|
|
|
|
xdo1=x2; ydo1=y2;
|
|
xdo2=x1; ydo2=y1;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto strbb;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
if (itm==1) {
|
|
itmen=0;
|
|
ulyyyqb();
|
|
|
|
if (itmen==1) {
|
|
qjadu(xka1,yka1,xdz2,ydz2);
|
|
q2=qhcjc;
|
|
|
|
q01=kaq1+0.001;
|
|
q02=kaq2-0.001;
|
|
|
|
if ((q2>q01)&&(q2<q02)||(q2>q01-360)&&(q2<q02-360)||(q2>q01+360)&&(q2<q02+360)) return;
|
|
|
|
|
|
if (q2<kaq2) q2=q2+360;
|
|
if ((q2-kaq2)>180) return;
|
|
|
|
// ads_printf(_T("END kaq2=%f"),kaq2);
|
|
|
|
kaq2=q2;
|
|
if (kaq2<kaq1+359.99) goto sta0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void yyyqa(void)
|
|
{
|
|
struct resbuf *ebup,*rb;
|
|
ads_point p01,p02;
|
|
ads_name ss1,en;
|
|
int typi,itn,itm;
|
|
Adesk::Int32 i,len;
|
|
ads_real x1,y1,x2,y2,dx,dy,d1,d2,rr0,q;
|
|
ads_real q12,q1,q2,rr,xd1,yd1;
|
|
ads_real q01,q02;
|
|
TCHAR txtdxf0[40]=_T(""),txtnam8[40]=_T("");
|
|
|
|
|
|
itn=0;
|
|
sta0:itn=itn+1;
|
|
|
|
if (itn>300) return;
|
|
|
|
//ads_printf(_T("\n itn=%d"),itn);
|
|
|
|
if (kaq2>kaq1+359.99) return;
|
|
|
|
itm=0;
|
|
|
|
rr0=karr;
|
|
q=kaq1*pi314/180;
|
|
|
|
xd1=xka1+rr0*cos(q);
|
|
yd1=yka1+rr0*sin(q);
|
|
|
|
q01=kaq1-0.001;
|
|
q02=kaq2+0.001;
|
|
|
|
p01[2]=0; p02[2]=0;
|
|
|
|
rr=10*ds111;
|
|
p01[0]=xd1-rr; p01[1]=yd1-rr;
|
|
p02[0]=xd1+rr; p02[1]=yd1+rr;
|
|
|
|
ul112l(p01[0],p01[1],p02[0],p02[1],0);
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("LINE,ARC"), 8, _T("WALL*"),NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WALL*,")<<LAY_WALL;
|
|
RBList mask(RTDXF0, _T("LINE,ARC"), 8,(const TCHAR*)sLayer,NULL);
|
|
|
|
if (ads_ssget(_T("C"),p01,p02,mask,ss1)!=RTNORM)
|
|
return;
|
|
i=0;
|
|
|
|
if (ads_sslength(ss1,&len)==RTNORM) goto strbb;
|
|
return;
|
|
|
|
strbb:ads_ssname(ss1,i,en);
|
|
ebup=ads_entget(en);
|
|
|
|
if (ebup==NULL) goto mbb1;
|
|
|
|
q1=0; q2=0;
|
|
|
|
for (rb=ebup;rb!=NULL;rb=rb->rbnext) {
|
|
typi=rb->restype;
|
|
|
|
if (typi==0) _tcscpy(txtdxf0,rb->resval.rstring);
|
|
if (typi==8) _tcscpy(txtnam8,rb->resval.rstring);
|
|
|
|
if (typi==40) rr=rb->resval.rreal;
|
|
if (typi==50) q1=rb->resval.rreal;
|
|
if (typi==51) q2=rb->resval.rreal;
|
|
|
|
if (typi==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
if (typi==11) {
|
|
x2=rb->resval.rpoint[0];
|
|
y2=rb->resval.rpoint[1]; }
|
|
}
|
|
ads_relrb(ebup);
|
|
ads_relrb(rb);
|
|
|
|
//if ((txtnam8[0]==_T('W'))&&(txtnam8[1]==_T('A'))&&(txtnam8[2]==_T('L'))&&(txtnam8[3]==_T('L'))) goto bbwa;
|
|
|
|
// goto mbb1;
|
|
|
|
//bbwa:
|
|
if ((txtdxf0[0]==_T('L'))&&(txtdxf0[1]==_T('I'))&&(txtdxf0[2]==_T('N'))&&(txtdxf0[3]==_T('E'))) goto lin;
|
|
if ((txtdxf0[0]==_T('A'))&&(txtdxf0[1]==_T('R'))&&(txtdxf0[2]==_T('C'))) goto arcjd;
|
|
goto mbb1;
|
|
|
|
arcjd:dx=xka1-x1;
|
|
dy=yka1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1>ds111) goto mbb1;
|
|
|
|
dx=fabs(karr-rr);
|
|
if (dx>ds111) goto mbb1;
|
|
|
|
q1=q1*180/pi314;
|
|
q2=q2*180/pi314;
|
|
if (q2<q1) q2=q2+360;
|
|
|
|
if ((q2>q01)&&(q2<q02)||(q2>q01-360)&&(q2<q02-360)||(q2>q01+360)&&(q2<q02+360)) goto acc1;
|
|
goto mbb1;
|
|
|
|
acc1:if ((q1>q01)&&(q1<q02)||(q1>q01-360)&&(q1<q02-360)||(q1>q01+360)&&(q1<q02+360)) {
|
|
q12=(q1+q2)/2;
|
|
if ((q12>q01)&&(q12<q02)||(q12>q01-360)&&(q12<q02-360)||(q12>q01+360)&&(q12<q02+360)) goto mbb1;
|
|
}
|
|
|
|
// ads_printf(_T("\nBBB arc kaq1=%f,kaq2=%f"),kaq1,kaq2);
|
|
// ads_printf(_T("\nBBB arc q1=%f,q2=%f"),q1,q2);
|
|
|
|
if (q1>kaq2) q1=q1-360;
|
|
if (q1<kaq2-360) q1=q1+360;
|
|
|
|
kaq1=q1;
|
|
ads_ssfree(ss1);
|
|
|
|
goto sta0;
|
|
|
|
|
|
lin:dx=x1-x2; dy=y1-y2;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
if (d1<ds111) goto mbb1;
|
|
|
|
if ((d1<dswa500)||(d1<whou)) {
|
|
|
|
dx=xd1-x1; dy=yd1-y1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xd1-x2; dy=yd1-y2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>10*ds111)&&(d2>10*ds111)) goto mbb1;
|
|
|
|
itm=1;
|
|
|
|
xdo1=x1; ydo1=y1;
|
|
xdo2=x2; ydo2=y2;
|
|
|
|
if (d2<d1) {
|
|
|
|
xdo1=x2; ydo1=y2;
|
|
xdo2=x1; ydo2=y1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mbb1:i=i+1;
|
|
if (i<len) goto strbb;
|
|
|
|
// kaq2=qdd1;
|
|
//if (dqend<dqsta) kaq2=qdd2;
|
|
|
|
ads_ssfree(ss1);
|
|
|
|
|
|
if (itm==1) {
|
|
|
|
itmen=0;
|
|
ulyyyqb();
|
|
|
|
if (itmen==1) {
|
|
qjadu(xka1,yka1,xdz2,ydz2);
|
|
q1=qhcjc;
|
|
|
|
|
|
q01=kaq1+0.001;
|
|
q02=kaq2-0.001;
|
|
if ((q1>q01)&&(q1<q02)||(q1>q01-360)&&(q1<q02-360)||(q1>q01+360)&&(q1<q02+360)) return;
|
|
|
|
if (q1>kaq1) q1=q1-360;
|
|
if ((kaq1-q1)>180) return;
|
|
|
|
kaq1=q1;
|
|
|
|
// ads_printf(_T("\n END kaq1=%f"),kaq1);
|
|
|
|
if (kaq2<kaq1+359.99) goto sta0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ulyyyqb(void)
|
|
{
|
|
struct resbuf apps,*rbps,*rb;
|
|
|
|
ads_name ensss,en;
|
|
int ires,it,itp;
|
|
Adesk::Int32 i,len;
|
|
TCHAR dxfnam[40]=_T(""),laynam[40]=_T(""),txtins[40]=_T(""),buf[40]=_T("");
|
|
ads_real r41,r42,q1,x1,y1,bs,dx,dy,gs1,gs2,gs3,tchyy,doork;
|
|
ads_real x01,y01,x02,y02,d1,d2,dm;
|
|
ads_point p1010,p1011;
|
|
ads_point pd1,pd2;
|
|
|
|
|
|
pd1[0]=xdo1; pd1[1]=ydo1; pd1[2]=0;
|
|
pd2[0]=xdo2; pd2[1]=ydo2; pd2[2]=0;
|
|
|
|
//modified by whl on 060323
|
|
//RBList mask(RTDXF0, _T("INSERT"), 8, LAY_WIN, NULL);
|
|
XString sLayer;
|
|
sLayer<<_T("WINDOW,")<<LAY_WIN;
|
|
RBList mask(RTDXF0, _T("INSERT"), 8, (const TCHAR*)sLayer, NULL);
|
|
|
|
if (ads_ssget(_T("C"),pd1,pd2,mask,ensss)!=RTNORM)
|
|
return;
|
|
|
|
i=0;
|
|
if (ads_sslength(ensss,&len)==RTNORM) goto starb;
|
|
return;
|
|
|
|
starb:ads_ssname(ensss,i,en);
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("WTHICK"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
rbps=ads_entgetx(en,&apps);
|
|
|
|
if (rbps==NULL) goto starb1;
|
|
|
|
it=0; gs1=0; gs2=0; gs3=0;
|
|
|
|
for (rb=rbps;rb!=NULL;rb=rb->rbnext) {
|
|
ires=rb->restype;
|
|
|
|
if (ires==0) _tcscpy(dxfnam,rb->resval.rstring);
|
|
if (ires==8) _tcscpy(laynam,rb->resval.rstring);
|
|
if (ires==2) _tcscpy(txtins,rb->resval.rstring);
|
|
if (ires==41) r41=rb->resval.rreal;
|
|
if (ires==42) r42=rb->resval.rreal;
|
|
if (ires==50) q1=rb->resval.rreal;
|
|
|
|
if (ires==10) {
|
|
x1=rb->resval.rpoint[0];
|
|
y1=rb->resval.rpoint[1]; }
|
|
|
|
if (ires==1040) {
|
|
it=it+1;
|
|
if (it==1) gs1=rb->resval.rreal;
|
|
if (it==2) gs2=rb->resval.rreal;
|
|
if (it==3) gs3=rb->resval.rreal;
|
|
}
|
|
}
|
|
|
|
ads_relrb(rbps);
|
|
ads_relrb(rb);
|
|
|
|
|
|
itp=0; it=0; tchyy=0;
|
|
p1010[0]=0; p1010[1]=0; p1010[2]=0;
|
|
p1011[0]=0; p1011[1]=0; p1011[2]=0;
|
|
|
|
apps.restype=RTSTR;
|
|
_tcscpy(buf,_T("WPLINE"));
|
|
apps.resval.rstring=buf;
|
|
apps.rbnext=NULL;
|
|
rbps=ads_entgetx(en,&apps);
|
|
|
|
if (rbps==NULL) goto starb1;
|
|
|
|
for (rb=rbps;rb!=NULL;rb=rb->rbnext) {
|
|
ires=rb->restype;
|
|
|
|
if (ires==1040) {
|
|
it=it+1;
|
|
if (it==1) tchyy=rb->resval.rreal;
|
|
}
|
|
|
|
if (ires==1010) {
|
|
|
|
if (itp<100) itp=itp+1;
|
|
|
|
if (itp==1) {
|
|
p1010[0]=rb->resval.rpoint[0];
|
|
p1010[1]=rb->resval.rpoint[1];
|
|
p1010[2]=rb->resval.rpoint[2]; }
|
|
|
|
if (itp==2) {
|
|
p1011[0]=rb->resval.rpoint[0];
|
|
p1011[1]=rb->resval.rpoint[1];
|
|
p1011[2]=rb->resval.rpoint[2]; }
|
|
|
|
}
|
|
}
|
|
|
|
ads_relrb(rbps);
|
|
ads_relrb(rb);
|
|
|
|
//if ((laynam[0]==_T('W'))&&(laynam[1]==_T('I'))&&(laynam[2]==_T('N'))&&(laynam[3]==_T('D'))&&(laynam[4]==_T('O'))&&(laynam[5]==_T('W'))) goto strabw;
|
|
// goto starb1;
|
|
|
|
//strabw:if ((dxfnam[0]==_T('I'))&&(dxfnam[1]==_T('N'))&&(dxfnam[2]==_T('S'))&&(dxfnam[3]==_T('E'))&&(dxfnam[4]==_T('R'))&&(dxfnam[5]==_T('T'))) goto bbin;
|
|
// goto starb1;
|
|
|
|
//bbin:
|
|
doork=0;
|
|
bs=_tstof(txtins);
|
|
|
|
// ads_printf(_T("\ngs1=%f,gs2=%f"),gs1,gs2);
|
|
|
|
if (itp>2) {
|
|
goto starb1; }
|
|
|
|
// ads_printf(_T("\np1010[0]=%f,tchyy=%f"),p1010[0],tchyy);
|
|
|
|
if (fabs(p1010[0])<1.0E-6) goto starb1;
|
|
|
|
if ((bs>90000.0)&&(fabs(p1010[0])>1.0E-6)) {
|
|
|
|
bs=r41;
|
|
if (bs<0) bs=-bs;
|
|
|
|
dx=bs*p1010[0];
|
|
x01=x1+dx*cos(q1);
|
|
y01=y1+dx*sin(q1);
|
|
|
|
dx=bs*p1011[0];
|
|
x02=x1+dx*cos(q1);
|
|
y02=y1+dx*sin(q1);
|
|
|
|
// if (tchyy<0) {
|
|
// dx=xdz1; xdz1=xdz2; xdz2=dx;
|
|
// dx=ydz1; ydz1=ydz2; ydz2=dx;
|
|
// tchyy=-tchyy; }
|
|
|
|
dm=bs*p1010[0];
|
|
// ulrrxxyy(x01,y01,x02,y02,tchyy,dm);
|
|
goto dmm; }
|
|
|
|
|
|
if (fabs(p1010[0])>1.0E-6) {
|
|
|
|
bs=r41;
|
|
if (bs<0) bs=-bs;
|
|
doork=bs/2;
|
|
|
|
dm=p1010[0];
|
|
if (dm>0) {
|
|
x01=x1+doork*cos(q1);
|
|
y01=y1+doork*sin(q1);
|
|
x02=x1+doork*cos(q1+pi314);
|
|
y02=y1+doork*sin(q1+pi314); }
|
|
else {
|
|
x02=x1+doork*cos(q1);
|
|
y02=y1+doork*sin(q1);
|
|
x01=x1+doork*cos(q1+pi314);
|
|
y01=y1+doork*sin(q1+pi314);
|
|
}
|
|
|
|
//ulrrxxyy(x01,y01,x02,y02,tchyy,dm);
|
|
|
|
goto dmm;
|
|
}
|
|
|
|
goto starb1;
|
|
|
|
dmm:dx=x01-xdo1; dy=y01-ydo1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=x02-xdo1; dy=y02-ydo1;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if ((d1>gs1)&&(d2>gs1)) goto starb1;
|
|
|
|
ulrrxxyy(x01,y01,x02,y02,tchyy,dm);
|
|
|
|
starb1:i=i+1;
|
|
if (i<len) goto starb;
|
|
|
|
ads_ssfree(ensss);
|
|
|
|
if (itmen==1) {
|
|
dx=xdo1-xdz1; dy=ydo1-ydz1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
dx=xdo1-xdz2; dy=ydo1-ydz2;
|
|
d2=sqrt(dx*dx+dy*dy);
|
|
|
|
if (d2<d1) {
|
|
dx=xdz1; xdz1=xdz2; xdz2=dx;
|
|
dx=ydz1; ydz1=ydz2; ydz2=dx;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void ulrrxxyy(ads_real x01,ads_real y01,ads_real x02,ads_real y02,ads_real tchyy,ads_real dm)
|
|
{
|
|
ads_real x0,y0,xd1,yd1,x2,y2,dx,dy,dd,rr,r42,d1,q;
|
|
|
|
r42=tchyy;
|
|
|
|
dx=x01-x02; dy=y01-y02;
|
|
dd=sqrt(dx*dx+dy*dy);
|
|
dx=dd/2;
|
|
|
|
d1=r42*dx;
|
|
dd=r42*dx;
|
|
if (dd<0) dd=-dd;
|
|
if (dd<0.0001) return;
|
|
|
|
dy=(dd*dd-dx*dx)/(2*dd);
|
|
rr=dd-dy;
|
|
|
|
qjadu(x01,y01,x02,y02);
|
|
|
|
q=(qhcjc-90)*pi314/180;
|
|
x2=(x01+x02)/2;
|
|
y2=(y01+y02)/2;
|
|
|
|
xd1=x2+d1*cos(q);
|
|
yd1=y2+d1*sin(q);
|
|
|
|
/* hlin(x1,y1,x2,y2,5); */
|
|
|
|
q=(qhcjc+90)*pi314/180;
|
|
if (r42<0) q=(qhcjc-90)*pi314/180;
|
|
|
|
x0=xd1+rr*cos(q);
|
|
y0=yd1+rr*sin(q);
|
|
|
|
if (dm<0) dm=-dm;
|
|
|
|
dx=rr*rr-dm*dm;
|
|
if (dx<0) dx=0;
|
|
dx=sqrt(dx);
|
|
|
|
dx=x0-xka1; dy=y0-yka1;
|
|
d1=sqrt(dx*dx+dy*dy);
|
|
|
|
// hlin(x01,y01,x02,y02,7);
|
|
// hlin(x0,y0,x01,y01,1);
|
|
// hlin(x0,y0,x02,y02,2);
|
|
// TCHAR zf[40];
|
|
//ads_getstring(5,NULL,zf);
|
|
|
|
if (d1<ds111) {
|
|
|
|
itmen=1;
|
|
|
|
// hlin(xx0,yy0,xdz1,ydz1,1);
|
|
// hlin(xka1,yka1,xdz2,ydz2,2);
|
|
|
|
mmrr=rr;
|
|
xx0=x0; yy0=y0;
|
|
|
|
xdz1=x01; ydz1=y01;
|
|
xdz2=x02; ydz2=y02;
|
|
|
|
// hlin(x0,y0,x01,y01,7);
|
|
// hlin(x0,y0,x02,y02,7);
|
|
|
|
}
|
|
}
|