天天看點

ARX對資料的類型和機關進行轉換

*ARX對資料的類型和機關進行轉換

量鋼機關轉換函數

AutoCAD軟體包的檔案acad.unt中,定義了一些常用的量鋼機關轉換關系,例如英裡與公裡,華氏與攝氏等等。函數acutCvUnit()用來将一種機關的數值轉換成另一種機關的數值。機關用字元串的形式表示,使用的字元串必須與檔案acad.unt中定義的一緻。如果目前繪圖機關是工程機關或建築機關(英尺或英寸),下面的程式能把指定的距離轉換成米為機關的值:

ads_real eng_len,metric_len;

char *prmpt=”請輸入距離:”;

if(acedGetDist(NULL,prmpt,&eng_len)!=RTNORM) return BAD;

acutCvUnit(eng_len,”inches”,”meters”,&metric_len);

[I]注意:不能用函數acutCvUnit()轉換不相配的機關,例如不能把英寸轉換成年[/I]。

字元串轉換函數

函數acdbRToS()用來将一個實數轉換成字元串值;

函數acdbAngToS()用來将一個角度值轉換成字元串值;

函數acdbDisToF()用來将一個字元串值轉換成實數值;

函數acdbAngToF()用來将一個字元串值轉換成角度值。

[I]注意:字元串格式由AutoCAD的系統變量來控制,對于實數值,機關和精度由系統變量LUNITS和IUPREC指定;對于角度值,機關和精度由系統變量AUNITS和AUPERC指定。不論實數還是角度值,标注變量DIMZIN控制着是否在生成字元串的前後補0[/I]。

下面的程式是調用函授acdbRToS()的方法:

ads_real x=17.5;

char fmtval[12];

//精度是第三個參數

acdbRToS(x,1,4,fmtval);

acutPrintf(“結果形式為%s\n”,fmtval);

acdbRToS(x,2,2,fmtval);

acutPrintf(“結果形式為%s\n”,fmtval);

acdbRToS(x,3,2,fmtval);

acutPrintf(“結果形式為%s\n”,fmtval);

acdbRToS(x,4,2,fmtval);

acutPrintf(“結果形式為%s\n”,fmtval);

acdbRToS(x,5,2,fmtval);

acutPrintf(“結果形式為%s\n”,fmtval);

假定系統變量DIMZIN為0,在AutoCAD文本螢幕上顯示為:

結果形式為1.7500E+01

結果形式為17.50

結果形式為1′-5.50″

結果形式為1′-5 1/2″

結果形式為17 1/2

當系統變量UNITMODE等于1時,輸出串的機關由輸入字元串的機關決定,是以,函數acdbRToS()在下列模式下傳回的值在形式上是不同的:工程機關制(模式3)、建築機關制(模式4)和分數形式(模式5)。當UNITMODE=1時,在上面的例子中,前兩行的輸出形式不變,後三行将變為:

結果形式為1′5.50″

結果形式為1′5 -1/2″

結果形式為17 -1/2

函數acdbDisToF()和acdbRToS()功能相反。下例就是引用上面程式轉換後生成的字元串值,再進行反變換得來的,是以,參數restuil的值是17.5。

acdbDisToF(“1.7500E+01”,1,&resuil);

acdbDisToF(“17.50”,2,&resuil);

acdbDisToF(“1′-5.50\″”,3,&resuil);

acdbDisToF(“1′-5 1/2\″”,4,&resuil);

acdbDisToF(“17 1/2”,5,&resuil);

下面的程式代碼調用函數acdbAngToS()的方法。與acdbRToS()的調用類似:

ads_real ang=3.14159;

char fmtval[12];

acdbAngToS(ang,0,0,fmtval);

acutPrintf(“角度的形式為%s\n”,fmtval);

acdbAngToS(ang,1,4,fmtval);

acutPrintf(“角度的形式為%s\n”,fmtval);

acdbAngToS(ang,2,4,fmtval);

acutPrintf(“角度的形式為%s\n”,fmtval);

acdbAngToS(ang,3,4,fmtval);

acutPrintf(“角度的形式為%s\n”,fmtval);

acdbAngToS(ang,4,2,fmtval);

acutPrintf(“角度的形式為%s\n”,fmtval);

假定系統變量DIMZIN為0,在AutoCAD文本螢幕上顯示為:

角度的形式為180

角度的形式為180d0′0″

角度的形式為200.0000g

角度的形式為3.1416r

角度的形式為w

函數acdbAngToF()與acdbAngToS()功能相反。下例就是引用上面程式轉換後生成的字元串值,再進行反變換得來的,是以,參數restuil的值是3.14159。

acdbAngToF(“180”,0,&resuil);

acdbAngToF(“180d0′0\″”,1,&resuil);

acdbAngToF(“200.0000g″”,2,&resuil);

acdbAngToF(“3.1416r”,3,&resuil);

acdbAngToF(“w”,4,&resuil);*