freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

autolisp使用反應(yīng)器-資料下載頁

2025-10-07 15:47本頁面
  

【正文】 以上程序,在 Command:提示下輸入 rctline命令,用鼠標(biāo)指定一條直線,該反應(yīng)器就會鏈接到指定的直線上。修改這條直線時(shí),就會出現(xiàn)圖 11- 4所示顯示有該直線當(dāng)前長度信息的對話框。 圖 11- 4顯示直線當(dāng)前長度信息的對話框 2. 定義繪制圖 11- 5所示圖形的命令。要求:將對象反應(yīng)器鏈接到圓上,如果圓被修改,兩條直線與圓的相對位置和相對比例不變。 圖 11- 5一個(gè)圓和兩條直線組成的圖形 根據(jù)題意,反應(yīng)器的鏈接對象是圓。觸發(fā)事件是圓被修改,從表 114可以查找出圖形對象被修改的事件是 :vlrmodified?;卣{(diào)函數(shù)的功能是兩條直線隨之被修改,且修改后與圓的相對位置和相對比例不變。兩條直線是與該反應(yīng)器相關(guān)聯(lián)的對象。 【 例 115】 定義將對象反應(yīng)器鏈接到圓上的命令 , 如果圓被修改 , 兩條直線與圓的相對位置和相對比例不變 。 (vlload) (defun c:c1l2( / p0 p1 p2 p3 p4 r r1 eh1 eh2 l1l2 rlt vrl) (setq p0(getpoint \n輸入圓心: )) (setq r(getdist p0 \n輸入半徑: )) (mand circle p0 r) (setq r1(* r)) (setq ec(entlast)) (setq p1(polar p0 0 r1)) (setq p2(polar p0 (* pi) r1)) (setq p3(polar p0 pi r1)) (setq p4(polar p0 (* pi) r1)) (mand line p1 p3 ) (setq eh1(cdr (assoc 5 (entget (entlast)))))。第一條直線的句柄 (mand line p2 p4 ) (setq eh2(cdr (assoc 5 (entget(entlast)))))。第二條直線的句柄 (setq l1l2(list eh1 eh2))。兩條直線的句柄表 (setq rlt(list (vlaxenamevlaobject ec)))。圓的圖元名轉(zhuǎn)換為 VLA對象 (setq vrl (vlrpers(vlrobjectreactor rlt l1l2 39。((:vlrmodified . c2l)))))。反應(yīng)器鏈接到圓上 , 兩條直線的句柄表為關(guān)聯(lián)數(shù)據(jù) , 當(dāng)發(fā)生修改該圓的事件時(shí) , 調(diào)用 c2l函數(shù) (princ)。靜默退出 ) 。定義 c2l函數(shù) (defun c2l(notifierobject reactorobject parameterlist / ec ec_l el1 el2 ell_1 ell_2 p0 p1 p2 p3 p4 p0x p0y p0z) (setq ec(vlaxvlaobjectename notifierobject)。VLA對象的圓轉(zhuǎn)換為圖元名 ec_l(entget ec)。圓的圖元表 p0(cdr(assoc 10 ec_l))。獲取圓心的坐標(biāo) r(* (cdr(assoc 40 ec_l)))。獲取圓的半徑之后 ) (setq el1(handent (car (vlrdata reactorobject))))。第一條直線的圖元名 (setq el2(handent (cadr (vlrdata reactorobject))))。第二直條線的圖元名 (setq p0x (car p0))。獲取圓心的 X坐標(biāo) (setq p0y (cadr p0))。獲取圓心的 Y坐標(biāo) (setq p0z (caddr p0))。獲取圓心的 Z坐標(biāo) (setq p1 (list (+ p0x r) p0y p0z))。修改直線端點(diǎn)的坐標(biāo) (setq p2 (list p0x (+ p0y r) p0z))。修改直線端點(diǎn)的坐標(biāo) (setq p3 (list ( p0x r) p0y p0z))。修改直線端點(diǎn)的坐標(biāo) (setq p4 (list p0x ( p0y r) p0z))。修改直線端點(diǎn)的坐標(biāo) (setq ell_1(entget el1))。第一條直線的圖元表 (setq ell_1(subst (vllist* 10 p1)(assoc 10 ell_1)ell_1))。直線的新端點(diǎn)替換直線的老端點(diǎn) (setq ell_1(subst (vllist* 11 p3)(assoc 11 ell_1)ell_1))。直線的新端點(diǎn)替換直線的老端點(diǎn) (entmod ell_1)。更新第一條直線 (setq ell_2(entget el2))。第二條直線的圖元表 (setq ell_2(subst (vllist* 10 p2)(assoc 10 ell_2)ell_2))。直線的新端點(diǎn)替換直線的老端點(diǎn) (setq ell_2(subst (vllist* 11 p4)(assoc 11 ell_2)ell_2))。直線的新端點(diǎn)替換直線的老端點(diǎn) (entmod ell_2)。更新第二條直線 ) 加載以上程序 , 在 Command:提示下輸入 c1l2命令 , 輸入圓心和半徑 ,即可繪制出圖 11- 5所示圖形 。 修改這個(gè)圓 , 兩條直線將隨之按題意的要求改變 。 在本程序中 , 與反應(yīng)器相關(guān)聯(lián)的數(shù)據(jù)是兩條直線的句柄 。 獲取圓心和半徑的途徑是: ① 將圓的 VLA對象轉(zhuǎn)換為圖元名 。 ② 根據(jù)圓的圖元名獲取圓的圖元表 。 ③ 從圓的圖元表獲取圓的圓心和半徑 。 修改直線的途徑是: ① 從關(guān)聯(lián)的數(shù)據(jù)表獲取是兩條直線的句柄 。 ② 根據(jù)直線的句柄獲取直線的圖元名 。③ 根據(jù)直線的圖元名獲取直線的圖元表 。 ④ 修改和更新直線的圖元表 。 調(diào)用較多的是普通的 AutoLISP函數(shù) 。 本例還可以利用 ActiveX對象實(shí)現(xiàn)相同的功能 。 程序代碼如下: 【 例 14- 5】 利用 ActiveX對象實(shí)現(xiàn)例 14- 4的功能 (vlload) (defun c:c1l2(/ p0 p1 p2 p3 p4 r ec el1 el2 v_c v_l1 v_l2 l1l2 vrl) (setq p0(getpoint \n輸入圓心 :)) (setq r(getdist p0 \n輸入半徑 :)) (mand circle p0 r) (setq r(* r)) (setq ec(entlast)) (setq v_c(list (vlaxenamevlaobject ec)))。圓的圖元名轉(zhuǎn)換為 VLA對象 (setq p1(polar p0 0 r)) (setq p2(polar p0 (* pi) r)) (setq p3(polar p0 pi r)) (setq p4(polar p0 (* pi) r)) (mand line p1 p3 ) (setq el1(entlast))。第一條直線的圖元名 (setq v_l1(vlaxenamevlaobject el1))。第一條直線轉(zhuǎn)換為 VLA對象 (mand line p2 p4 ) (setq el2(entlast))。第二條直線的圖元名 (setq v_l2(vlaxenamevlaobject el2))。第二條直線轉(zhuǎn)換為 VLA對象 (setq l1l2(list v_l1 v_l2))。兩條直線的 VLA對象表 (setq vrl (vlrpers(vlrobjectreactor v_c l1l2 39。((:vlrmodified . c2l)))))。反應(yīng)器鏈接到圓上 , 兩條直線的 VLA對象表為關(guān)聯(lián)數(shù)據(jù) , 當(dāng)發(fā)生修改該圓的事件時(shí) , 調(diào)用 c2l函數(shù) (princ) ) 。定義 c2l函數(shù) (defun c2l(notifierobject reactorobject parameterlist / p0 p1 p2 p3 p4 p0x p0y p0z l v_l1 v_l2) (setq p0(VLAgetcenter notifierobject))。獲取圓的圓心 , P0是變體 (setq p0(vlaxvariantvalue p0))。將變體轉(zhuǎn)換為安全數(shù)組 (setq p0(vlaxsafearraylist p0))。將安全數(shù)組轉(zhuǎn)換為表 (setq c_r(* (VLAgetradius notifierobject)))。獲取圓的半徑之后 (setq v_l1(car (vlrdata reactorobject)))。第一條直線的 VLA對象 (setq v_l2(cadr (vlrdata reactorobject)))。第二條直線的 VLA對象 (setq p0x (car p0))。獲取圓心的 X坐標(biāo) (setq p0y (cadr p0))。獲取圓心的 Y坐標(biāo) (setq p0z (caddr p0))。獲取圓心的 Z坐標(biāo) 。計(jì)算直線端點(diǎn)的新位置再轉(zhuǎn)換為 ActiveX的三維點(diǎn) (setq p1 (vlax3dpoint (list (+ p0x c_r) p0y p0z)))。 (setq p2 (vlax3dpoint(list p0x (+ p0y c_r) p0z))) (setq p3 (vlax3dpoint(list ( p0x c_r) p0y p0z))) (setq p4 (vlax3dpoint(list p0x ( p0y c_r) p0z))) (vlaputstartpoint v_l1 p1)。更新直線 1的起點(diǎn) (vlaputendpoint v_l1 p3)。更新直線 1的終點(diǎn) (vlaputstartpoint v_l2 p2)。更新直線 2的起點(diǎn) (vlaputendpoint v_l2 p4)。更新直線 2的終點(diǎn) ) 本程序中 , 與反應(yīng)器相關(guān)聯(lián)的數(shù)據(jù)是兩條直線的 VLA對象 。直接從圓的 VLA對象中獲取圓的圓心和半徑屬性 。 直接修改直線的起點(diǎn)和終點(diǎn)屬性 。 因此具有程序代碼簡短 、 運(yùn)行速度快的特點(diǎn) 。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1