油氣儲(chǔ)運(yùn)網(wǎng)

 找回密碼
 立即注冊(cè)

QQ登錄

QQ快速登錄

一步迅速開始

pdms培訓(xùn)&項(xiàng)目數(shù)字化360網(wǎng)
查看: 89321|回復(fù): 18
打印 上一主題 下一主題

[經(jīng)驗(yàn)交流] Autocad 的 DIESEL 函數(shù)詳細(xì)介紹(包括插入自動(dòng)變化的日期)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2015-11-23 17:48:17 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
帖子的顯示效果不好,請(qǐng)直接下載pdf看吧:
Autocad插入動(dòng)態(tài)日期-DIESEL函數(shù)的具體介紹.pdf (443.9 KB, 下載次數(shù): 23, 售價(jià): 3 金幣)


關(guān)于autocad如何插入動(dòng)態(tài)變化的日期,為了方便大家理解,特地做了個(gè)錄像,相信大家一看就懂了:
有兩種方式:
1. 利用字段插入diesel函數(shù)  進(jìn)而插入日期步驟:點(diǎn)擊cad的“插入”-“字段”-“diesel表達(dá)式”,填入函數(shù)點(diǎn)擊下面播放器左下角的播放按鈕可以播放視頻

注意不是附件那里,是附件上面的

CAD插入日期-字段方式-插入今天 少3天日期.avi (954.5 KB, 下載次數(shù): 3, 售價(jià): 3 金幣)

2. 利用RTEXT插入diesel函數(shù) 進(jìn)而插入日期(發(fā)現(xiàn)這種方式只支持高版本cad(例如,cad2016可以),低版本cad(如cad2011)是不可以的)
步驟:輸入命令:“RTEXT”- “D”,輸入函數(shù) cad插入日期 - rtext-diesel方法.avi (475.5 KB, 下載次數(shù): 6, 售價(jià): 3 金幣)


Autocad的DIESEL函數(shù)的具體介紹
DIESEL(Direct Interpretively EvaluatedString ExpressionLanguage)是指“直接解釋求值的字符串表達(dá)式語(yǔ)言”。使用的DIESEL可以控制AutoCAD系統(tǒng)變量MODEMACRO的值,也可用來(lái)編寫菜單宏,但只能用來(lái)處理字符串。
DIESEL的宏表達(dá)式格式如下:
$(字符串函數(shù)名,函數(shù)參數(shù)1,函數(shù)參數(shù)2…)
其中,根據(jù)函數(shù)的不同,函數(shù)參數(shù)的個(gè)數(shù)可以為零或者多個(gè),但最多為9個(gè)。在宏表達(dá)式的不同元素之間,不可以有任何空格。所有的宏表達(dá)式都必須以“$”符號(hào)開頭。
2 diesel函數(shù)格式

   
函數(shù)
   
   
說(shuō)明/樣例
   
  
+(加)
  
  
返回?cái)?shù)字val1、val2、…、val9的和。
  
$(+,val1[,val2,…,val9])
  
如果當(dāng)前厚度被設(shè)定為5,則以下DIESEL字符串返回15。
  
$(+,$(getvar,thickness),10)
  
  
-(減)
  
  
返回從數(shù)字val1中減去val2至val9的結(jié)果。
  
$(-,val1[,val2,…,val9])
  
  
*(乘)
  
  
返回?cái)?shù)字val1、val2、…、val9的積。
  
$(*,val1[,val2,…,val9])
  
  
/(除)
  
  
返回?cái)?shù)字val1除以val2、…、val9的結(jié)果。
  
$(/,val1[,val2,…,val9])
  
  
=(等于)
  
  
如果數(shù)字val1和val2相等,則字符串返回1;否則,返回0。
  
$(=,val1,val2)
  
  
<(小于)
  
  
如果數(shù)字val1小于val2,則字符串將返回1;否則,返回0。
  
$(<,val1,val2)
  
以下表達(dá)式用于獲取HPANG的當(dāng)前值;如果該值小于系統(tǒng)變量USERR1中存儲(chǔ)的值,則將返回1。如果USERR1中存儲(chǔ)的值為10.0且HPANG的當(dāng)前設(shè)置為15.5,則以下字符串將返回0。
  
$(<,$(getvar,hpang),$(getvar,userr1))
  
  
>(大于)
  
  
如果數(shù)字val1大于val2,則字符串返回1;否則,返回0。
  
$(>,val1,val2)
  
  
!=(不等于)
  
  
如果數(shù)字val1和val2不相等,則字符串返回1;否則,返回0。
  
$(!=,val1,val2)
  
  
<=(小于或等于)
  
  
如果數(shù)字val1小于或等于val2,則字符串返回1;否則,返回0。
  
$(<=,val1,val2)
  
  
>=(大于或等于)
  
  
如果數(shù)字val1大于或等于val2,則字符串返回1;否則,返回0。
  
$(>=,val1,val2)
  
  
并且
  
  
返回整數(shù)val1到val9的按位邏輯與。
  
$(and,val1[,val2,…,val9])
  
  
angtos
  
  
按指定的格式和精度返回角度值。
  
$(angtos,value[,mode,precision])
  
按mode和precision指定的格式將給定的value作為角度值進(jìn)行編輯,與類似的AutoLISP函數(shù)的定義一樣。如果mode和precision被省略,則使用由UNITS命令選擇的當(dāng)前值。
  
注:AutoLISP在AutoCADLT中不可用。
  
可應(yīng)用以下mode值:
  
·        0,表示度
  
·        1,表示度/分/秒
  
·        2,表示百分度
  
·        3,表示弧度
  
·        4,表示勘測(cè)單位
  
  
Edtime
  
  
返回基于指定圖片的格式化的日期和時(shí)間。
  
$(edtime,time,picture)
  
編輯由time指定的Julian日期(例如,根據(jù)給定的picture從$(getvar,date)獲。。picture由被具體日期和時(shí)間代替的格式短語(yǔ)組成。不能解釋為格式短語(yǔ)的字符被完整地復(fù)制到$(edtime)的結(jié)果中。格式短語(yǔ)的定義如下表所示。
  
例如,假定日期為1998年9月5日星期六,時(shí)間為4:53:17.506,則edtime的相應(yīng)格式短語(yǔ)和輸出樣例如下所示:
  
·        D-5
  
·        DD-05
  
·        DDD-Sat
  
·        DDDD-Saturday
  
·        M-9
  
·        MO-09
  
·        MON-Sep
  
·        MONTH-September
  
·        YY-98
  
·        YYYY-1998
  
·        H-4
  
·        HH-04
  
·        MM-53
  
·        SS-17
  
·        MSEC-506
  
·        AM/PM-AM
  
·        am/pm-am
  
·        A/P-A
  
·        a/p-a
  
如上表所示,應(yīng)該輸入完整的AM/PM短語(yǔ)。如果僅使用AM,則A將按字面復(fù)制而M將返回當(dāng)前月份。
  
如果圖片中出現(xiàn)任何AM/PM短語(yǔ),則H和HH短語(yǔ)將按12小時(shí)國(guó)內(nèi)時(shí)鐘(12:00-12:591:00-11:59)編輯時(shí)間,而不是按24小時(shí)時(shí)鐘(00:00-23:59)編輯時(shí)間。
  
下面的樣例使用上表中的日期和時(shí)間。請(qǐng)注意,由于逗號(hào)被讀為參數(shù)分隔符,因此必須將它括在引號(hào)中。
  
$(edtime,$(getvar,date),DDD","DDMONYYYY-H:MMam/pm)
  
該表達(dá)式返回以下結(jié)果:
  
Sat,5Sep1998-4:53am
  
如果time為0,則使用執(zhí)行最外層宏時(shí)的時(shí)間和日期。這避免了對(duì)$(getvar,date)的冗長(zhǎng)而費(fèi)時(shí)的多次調(diào)用,并保證所有由多個(gè)$(edtime)宏組成的字符串都使用相同的時(shí)間。
  
  
eq
  
  
如果字符串val1和val2相同,則字符串返回1;否則,返回0。
  
$(eq,val1,val2)
  
以下表達(dá)式用于獲取當(dāng)前圖層的名稱;如果該名稱與USERS1(USERS1-5)系統(tǒng)變量中存儲(chǔ)的字符串值相匹配,則將返回1。假設(shè)字符串“PART12”存儲(chǔ)在USERS1中,并且當(dāng)前圖層相同。
  
注:USERS1-5系統(tǒng)變量在AutoCADLT中不可用。
  
$(eq,$(getvar,users1),$(getvar,clayer))
  
該表達(dá)式返回以下結(jié)果:
  
1
  
  
Eval
  
  
將字符串str傳給DIESEL計(jì)算器,并返回計(jì)算結(jié)果。
  
$(eval,str)
  
  
fix
  
  
通過舍棄小數(shù)部分,將實(shí)數(shù)數(shù)字值截?cái)酁檎麛?shù)。
  
$(fix,value)
  
  
Getenv
  
  
返回環(huán)境變量varname的值。
  
$(getenv,varname)
  
如果未定義具有該名稱的變量,則返回空字符串。
  
  
Getvar
  
  
返回具有給定varname的系統(tǒng)變量的值。
  
$(getvar,varname)
  
  
if
  
  
根據(jù)條件計(jì)算表達(dá)式。
  
$(if,expr,dotrue[,dofalse])
  
如果expr為非零,則進(jìn)行計(jì)算并返回dotrue。否則,進(jìn)行計(jì)算并返回dofalse。請(qǐng)注意,不計(jì)算expr未選擇的分支。
  
  
索引顏色
  
  
返回以逗號(hào)分隔的字符串中的指定成員。
  
$(index,which,string)
  
假定string參數(shù)包含一個(gè)或多個(gè)由宏參數(shù)分隔符字符(逗號(hào))分隔的值。which參數(shù)選擇這些值中的一個(gè)值進(jìn)行提取,第一項(xiàng)編號(hào)為0。此函數(shù)通常用于從$(getvar)返回的點(diǎn)坐標(biāo)中提取X、Y或Z坐標(biāo)值。
  
使用此函數(shù),應(yīng)用程序可從USERS1-5系統(tǒng)變量中檢索存儲(chǔ)為以逗號(hào)分隔的字符串的值。
  
注:USERS1-5系統(tǒng)變量在AutoCADLT中不可用。
  
  
nth
  
  
計(jì)算并返回由which選定的參數(shù)。
  
$(nth,which,arg0[,arg1,…,arg7])
  
如果which為0,則nth返回arg0,依此類推。請(qǐng)注意,$(nth)$(index)之間的區(qū)別;$(nth)將一系列參數(shù)中的一個(gè)返回給函數(shù),而$(index)從作為單個(gè)參數(shù)傳遞的以逗號(hào)分隔的字符串中提取值。不計(jì)算which未選擇的參數(shù)。
  
  
  
  
返回整數(shù)val1到val9的按位邏輯或。
  
$(or,val1[,val2,…,val9])
  
  
Rtos
  
  
按指定的格式和精度返回實(shí)數(shù)值。
  
$(rtos,value[,mode,precision])
  
將給定的值作為實(shí)數(shù)進(jìn)行編輯,按照下面兩個(gè)變量指定的格式:mode和precision。如果省略mode和precision,則使用由UNITS命令選擇的當(dāng)前值。
  
  
strlen
  
  
返回string的字符長(zhǎng)度。
  
$(strlen,string)
  
  
Substr
  
  
返回string的子串,該子串從字符start開始,長(zhǎng)度為length。
  
$(substr,string,start[,length])
  
字符串中的字符從1開始編號(hào)。如果省略length,則返回所有剩余字符串。
  
  
  
  
返回string按當(dāng)前地區(qū)的規(guī)則轉(zhuǎn)換為大寫的結(jié)果。
  
$(upper,string)
  
  
xor
  
  
返回整數(shù)val1到val9的按位邏輯異或。
  
$(xor,val1[,val2,…,val9])
  

注:該函數(shù)根據(jù)參數(shù)“mode”和“precision”指定的格式,給定的參數(shù)“value”作為角度值進(jìn)行編輯,如果參數(shù)“mode”和“precision”被省略,則使用由“unites”命令指定的當(dāng)前值。參數(shù)“mode”的取值及其含義見表3。
3 “mode”的取值及其含義
  
Mode值
  
字符串格式
0
1
度/分/秒
2
百分度
3
弧度
4
勘測(cè)單位
注:該函數(shù)返回基于指定圖片的格式化的日期和時(shí)間。
插入日期的重點(diǎn)介紹                        
選擇RTEXT的Diesel選項(xiàng),在彈出的表達(dá)式輸入對(duì)話框中輸入如下字符串:
$(edtime,$(getvar,date),DDD","DMONYYYY)
在圖中選擇適當(dāng)位置后,則在圖中位置顯示如下當(dāng)前日期文本:
其中,“time”參數(shù)為給定的AutoCAD日期,通常使用函數(shù)“$(getvar,date)”來(lái)獲;
“picture”參數(shù)由日期和時(shí)間的特定表示法替代的格式短語(yǔ)組成。格式短語(yǔ)的定義如表1所示。所有不能解釋為格式短語(yǔ)的字符將被完整地復(fù)制到函數(shù)返回結(jié)果中。
1 “edtime”函數(shù)格式短語(yǔ)定義
  
  
格式
輸出示例
格式
輸出示例
Day
D
9
H
5
DD
09
HH
05
DDD
Tue
MM
47
DDDD
Tuesday
SS
17
Month
^M
6
MSEC
506
MO
06
AM/PM
AM
MON
Jun
am/pm
pm
MONTH
June
A/P
P
Year
YY
01
a/p
p
YYYY
2001



舉例:
  
  
代碼
顯示效果
插入當(dāng)前日期
$(edtime,$(getvar,date),D.MO.YYYY)
比當(dāng)前日期多3天
$(+,$(edtime,$(getvar,date),D),3).$(edtime,$(getvar,date),MO).$(edtime,$(getvar,date),YYYY)
插入當(dāng)前日期和時(shí)間
$(edtime,$(getvar,date),DDD","DDMONYYYY-H:MMam/pm)
  
注意“picture”參數(shù)中逗號(hào)必須放在引號(hào)中,否則它將被當(dāng)作參數(shù)分隔符。













cad插入日期 - 直接插入diesel表達(dá)式.avi

446 KB, 下載次數(shù): 1

售價(jià): 3 金幣  [記錄]


油氣儲(chǔ)運(yùn)網(wǎng) - 論壇版權(quán)1、本主題所有言論和圖片純屬會(huì)員個(gè)人意見,與本論壇立場(chǎng)無(wú)關(guān)
2、本站所有主題由該帖子作者發(fā)表,該帖子作者與油氣儲(chǔ)運(yùn)網(wǎng)享有帖子相關(guān)版權(quán)
3、其他單位或個(gè)人使用、轉(zhuǎn)載或引用本文時(shí)必須同時(shí)征得該帖子作者和油氣儲(chǔ)運(yùn)網(wǎng)的同意
4、帖子作者須承擔(dān)一切因本文發(fā)表而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
5、本帖部分內(nèi)容轉(zhuǎn)載自其它媒體,但并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)
6、如本帖侵犯到任何版權(quán)問題,請(qǐng)立即告知本站,本站將及時(shí)予與刪除并致以最深的歉意
7、油氣儲(chǔ)運(yùn)網(wǎng)管理員和版主有權(quán)不事先通知發(fā)貼者而刪除本文

沙發(fā)
 樓主| 發(fā)表于 2015-11-24 12:43:28 | 只看該作者
插入自動(dòng)變化的日期效果:

板凳
 樓主| 發(fā)表于 2015-12-18 13:54:56 | 只看該作者
cad 插入日期測(cè)試.dwg (113.5 KB, 下載次數(shù): 1910)

給個(gè)例子

地板
 樓主| 發(fā)表于 2016-10-19 14:14:25 | 只看該作者
插入文件名(不含路徑)的1-6個(gè)字符:
$(substr,%<\AcVar Filename \f "%fn2">%,1[,6])
5#
 樓主| 發(fā)表于 2016-10-19 21:21:59 | 只看該作者
文件名長(zhǎng)度(包括后綴):
$(strlen,$(getvar,"dwgname"))

提取無(wú)后綴文件名的最后兩位:
$(substr,$(getvar, "dwgname"),$(-,$(strlen,$(getvar,"dwgname")),5),2)
6#
發(fā)表于 2016-12-31 09:10:29 | 只看該作者
樓主辛苦,贊一個(gè)
7#
發(fā)表于 2017-4-4 08:48:50 | 只看該作者
謝謝樓主分享!
8#
發(fā)表于 2017-5-19 22:04:48 | 只看該作者
感覺高大上,沒看懂,贊一個(gè)先
9#
發(fā)表于 2017-8-11 13:41:26 | 只看該作者

樓主辛苦,贊一個(gè)
10#
發(fā)表于 2017-8-16 19:38:46 | 只看該作者
樓主辛苦了。
您需要登錄后才可以回帖 登錄 | 立即注冊(cè)  

本版積分規(guī)則

掃碼訪問手機(jī)版

QQ|關(guān)于我們|網(wǎng)站地圖|油氣儲(chǔ)運(yùn)網(wǎng) ( 魯ICP備11007657號(hào)-3 )

GMT+8, 2024-9-6 13:49 , Processed in 0.036526 second(s), 17 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

Copyright © 2001-2023, Tencent Cloud.

快速回復(fù) 返回列表