AutoCAD作為一個專業(yè)繪圖軟件在機械、電子、建筑及航空等領(lǐng)域得到了廣泛的應(yīng)用,但是大多數(shù)AutoCAD的使用者只知道AutoCAD具有強大的繪圖功能,卻很少有人注意到AutoCAD中的一個非常有用的命令:幾何計算器cal。和普通的計算器一樣,cal幾何計算器可以完成加、減、乘、除運算以及三角函數(shù)的運算。這使得用戶在使用AutoCAD繪圖過程中,可以在不中斷命令的情況下用計算機進行算術(shù)運算,AutoCAD則將運算的結(jié)果直接作為命令的參數(shù)使用。
成都創(chuàng)新互聯(lián)服務(wù)項目包括阿克陶網(wǎng)站建設(shè)、阿克陶網(wǎng)站制作、阿克陶網(wǎng)頁制作以及阿克陶網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,阿克陶網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到阿克陶省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
但重要的是,與一般的計算器不同,AutoCAD幾何計算器可以作幾何運算。它可以作坐標(biāo)點和坐標(biāo)點之間的加減運算,可以使用AutoCAD的OSNAP模式捕捉屏幕上的坐標(biāo)點參與運算,還可以自動計算幾何坐標(biāo)點。如計算兩條相交直線的交點,計算直線上的等分點等。此外,AutoCAD幾何計算器還具有計算矢量和法線的功能。
一、Cal函數(shù)的計算功能運用
在AutoCAD中,cal命令類似于一個普通的計算器,可以用來計算與加、減、乘、除等有關(guān)的標(biāo)準(zhǔn)數(shù)學(xué)表達式,并遵從運算表達式的標(biāo)準(zhǔn)數(shù)學(xué)運算次序。而且,cal命令還是一個透明名令,可以用來提供一個點或一個數(shù)。當(dāng)我們透明執(zhí)行該命令時,其計算結(jié)果被解釋為AutoCAD命令的一個輸入值。下面是透明執(zhí)行計算器功能的一個實例。
以(200,200)為圓心繪制半徑為[(425-260)*(1/3)+sin(45)]的圓。
(1)在命令行輸入:C,并按ENTER鍵;
(2)命令行提示: “指定圓的圓心或[三點(3P)/兩點(2P)/相切、相切、半徑(T)]:”,輸入(100,100)并按ENTER鍵;
(3)命令行提示:“指定圓的半徑或直徑:”,此時輸入:“cal”,并按ENTER鍵,然后輸入表達式:(425-260)*(1/3)+sin(45)并按ENTER鍵;
(4)命令行顯示:41.9571。即AutoCAD以表達式的值41.9571為圓的半徑繪制了一個圓。
二、Cal函數(shù)在找點中的運用
在使用AutoCAD繪圖中,常常需要確定一些無法直接給出坐標(biāo)的點。例如,任意兩點間的中點,和任意方向直線相切的圓的圓心,以及直線上任意等分點等。這里可以充分利用AutoCAD的cal函數(shù)的幾何運算功能,在AutoCAD繪圖中實現(xiàn)這些點的快速定位。
下面是利用AutoCAD的cal函數(shù)的幾何運算功能實現(xiàn)在AutoCAD繪圖中經(jīng)常遇到的一個快速定位的實例。
例如,要從一個圓心距一直線的端點之間的2/3處為起點畫一直線。操作過程如下:
Command: line From point: 'cal (起動幾何計算器)
Expression: plt(cen,end,2/3)(輸入表達式,這里計算器把OSNAP的cen和end模式當(dāng)作點坐標(biāo)的臨時存儲單元)
Select entity for CEN sanp:(用光標(biāo)捕捉圓心)
Select entity for END snap:(用光標(biāo)捕捉直線的端點)
To point:
其他的目標(biāo)捕捉模式,如int、ins及tan等均可在幾何計算表達式中使用。
按照題目要求編寫的Python程序如下
def calBMI(height,weight):
BMI=weight/(height*height)
if BMI18.5:
return [BMI,"過輕"]
elif BMI24:
return [BMI,"正常"]
elif BMI28:
return [BMI,"過重"]
else:
return [BMI,"肥胖"]
import re
s=input("請輸入你的身高(米)和體重(公斤)【逗號隔開】:")
s1=re.split(r'[,,]',s)
height=float(s1[0])
weight=float(s1[1])
name="李子健"
bmi=calBMI(height,weight)
print("{}的測算結(jié)果為:".format(name))
print("BMI:%.2f"%bmi[0])
print(bmi[1])
源代碼(注意源代碼的縮進)
首先, 你的程序有一個小錯誤,開頭聲明應(yīng)該為void cal(const char *p,int num);
我試了一下,這個程序是沒有固定的結(jié)果的。
cal函數(shù)傳遞一個常量指針和一個整型應(yīng)用,在cal中首先給整數(shù)賦值為0,然后開始循環(huán),當(dāng)*p為零時結(jié)束循環(huán),這里循環(huán)的時機就是在系統(tǒng)為str分配內(nèi)存空間決定的,因為你沒有給str賦值,所以程序會按照內(nèi)存中原來存儲的未知的數(shù)執(zhí)行,當(dāng)遇到0時就停止循環(huán)。
補充:str因為沒有被賦初值,所以他里面的內(nèi)容是隨機的了,如果你以它里面的內(nèi)容作為循環(huán)的條件,那么當(dāng)遇到p所指的內(nèi)容為0的時候才會結(jié)束循環(huán)。再不采納我也沒招了。