C语言实现的CAD动态时钟,默认走五分钟,利用C语言生成SCR文件,然后用AutoCAD2002加载SCR文件得到结果。
代码如下:
#include<STDIO.H> #include<STDLIB.H> void GenerateClock(FILE* fp)//生成钟表盘 { fprintf(fp,"circle 100,100 100\n");//画表盘 fprintf(fp,"line 100,100 @40<90 \n");//画时针 fprintf(fp,"-group c hourhand \nlast \n");//对时针编号 fprintf(fp,"line 100,100 @60<90 \n");//画分针 fprintf(fp,"-group c minutehand \nlast \n");//对分针编号 fprintf(fp,"line 100,100 @70<90 \n");//画秒针 fprintf(fp,"-group c secondhand \nlast \n");//对秒针编号 for (int i=0;i<12;i++) { fprintf(fp,"line from 100,100 @100<%d @20<%d \n",i*30,180+i*30); } fprintf(fp,";"); } void TimeTicker(FILE* fp)//走动过程 { int i,j; int hour,minute,second; hour=0;minute=0;second=0; fprintf(fp,"text 60,40 20 0 %d:%d:%d\n",hour,minute,second); fprintf(fp,"-group c text \nlast \n");//对文本编号 for (i=0;i<5;i++) { second=0;j=0; for (j=0;j<60;j++) { fprintf(fp,"rotate g secondhand 100,100 -%d\n",6); second+=1; fprintf(fp,"text 50,40 20 0 %d:%d:%d\n",hour,minute,second); fprintf(fp,"rotate g minutehand 100,100 -%f\n",0.1); fprintf(fp,"rotate g hourhand 100,100 -%f\n",0.1/60.0); fprintf(fp,"delay 1000\n"); fprintf(fp,"erase 60,40 \n"); } minute+=1; } } int main() { FILE* fp; if ((fp=fopen("Clock.scr","w"))==NULL) { printf("Files Opens Failed!\n"); return 0; } GenerateClock(fp); TimeTicker(fp); return 0; }