3.11 Êý¾ÝÀàÐÍת»»º¯Êý
ÓÐʱ»áÒªÇóת»»Êý¾ÝÀàÐÍ£¬ÌرðÊǵ±Ê¹ÓÃacutPrintf()º¯ÊýÔÚÃüÁîÐÐÌáʾÓû§Ê±¡£±í3-10ÁгöÁËADSת»»º¯Êý¡£ ±í3-10 ³£ÓõÄADSת»»º¯Êý
º¯ Êý˵ Ã÷
acdbRToS() ת»»ads_realÀàÐ͵ÄÊýֵΪ×Ö·û´® acdbAngToS() °´¸ñʽת»»½Ç¶ÈΪ×Ö·û´® acutToUpper() °Ñ×Ö·ûת»»Îª´óд acutToLower() °Ñ×Ö·ûת»»ÎªÐ¡Ð´
acedTrans() °Ñµã»òÎ»ÒÆ´ÓÒ»¸ö×ø±êϵת»»µ½ÁíÒ»¸ö×ø±êϵ 1. acdbRToS()[ads_rtos()] acdbRToS()º¯ÊýµÄ¶¨ÒåÈçÏ£º
acdbRToS()º¯Êý°´ÕÕunitºÍprec(¾«¶È)ÉèÖõĸñʽ°Ñvalת»»Îª×Ö·û´®£¬½á¹û·ÅÈëstr£¬str±ØÐëÖ¸Ïò×ãÒÔÈÝÄɸñʽ»¯×Ö·û´®µÄÒ»¿é»º³åÇø¡£²ÎÊýunitѡȡת»»ºó×Ö·û´®µÄµ¥Î»ÖÆ£¬ÆäÖµÓ¦·ûºÏAutoCADϵͳ±äÁ¿LUNITSÔÊÐíµÄȡֵ·¶Î§(1~5£¬²ÎÔÄAutoCADÔÚÏß°ïÖúÖеġ°ÏµÍ³
±äÁ¿¡±)¡£Èç¹ûunit
µÄֵΪ-1£¬acdbRToS()º¯ÊýʹÓÃLUNITSµÄµ±Ç°Öµ¡£²ÎÊýprecѡȡ×Ö·û´®Öаüº¬µÄСÊýλÊý¡£Èç¹ûprecµÄֵΪ-1£¬acdbRToS()º¯ÊýʹÓÃAutoCADϵͳ±äÁ¿LUPRECµÄµ±Ç°Öµ¡£AutoCAD³ß´ç±ê×¢±äÁ¿DIMZINµÄµ±Ç°Öµ¿ØÖÆacdbRToS()º¯ÊýÊÇ·ñ°Ñǰµ¼ÁãºÍ½áβÁãдÈëstr¡£Èç¹ûacdbRToS()º¯Êýµ÷Óóɹ¦
£¬·µ»ØRTNORM£¬·ñÔò·µ»ØÒ»¸ö´íÎóÂë¡£
2. acdbAngToS()[ads_angtos()] acdbAngToS()º¯ÊýµÄ¶¨ÒåÈçÏ£º
acdbAngToS()º¯Êý°´ÕÕunitºÍprec(¾«¶È)ÉèÖõĸñʽ°Ñvת»»Îª×Ö·û´®£¬²ÎÊývÒÔ»¡¶ÈΪµ¥Î»£¬½á¹û·ÅÈëstr£¬str±ØÐëÖ¸Ïò×ãÒÔÈÝÄɸñʽ»¯×Ö·û´®µÄÒ»¿é»º³åÇø¡£×Ö·û´®µÄ´óСȡ¾öÓÚÇëÇóģʽºÍ¾«¶È£¬Í¨³£15×Ö½Ú¾Í×ã¹»ÁË¡£²ÎÊýunitѡȡ½Ç¶Èת»»ºóµÄµ¥Î»ÖÆ£¬ÆäÖµÓ¦·ûºÏAutoCADϵͳ±äÁ¿AU
NITSÔÊÐíµÄȡֵ·¶Î§¡£´ËÍ⣬Èç¹ûÉèÖÃunitµÄֵΪ-1£¬acdbAngToS()º¯ÊýʹÓÃAUNITSµÄµ±Ç°Öµ¡£²ÎÊýprecѡȡ×Ö·û´®Öаüº¬µÄСÊýλÊý¡£Èç¹ûprecµÄÖµÉèÖÃΪ-1£¬acdbAngToS()º¯ÊýʹÓÃAutoCADϵͳ±äÁ¿AUPRECµÄµ±Ç°Öµ¡£AutoCAD³ß´ç±ê×¢±äÁ¿DIMZINµÄµ±Ç°Öµ¿ØÖÆacdbAngToS()º¯ÊýÊÇ·ñ°Ñ
ǰµ¼ÁãºÍ½áβÁãдÈëstr¡£AutoCADÓû§Ö¸ÄÏ˵Ã÷ÁËDIMZINÈçºÎȡֵ¡£Èç¹ûacdbAngToS()º¯Êýµ÷Óóɹ¦£¬·µ»ØRTNORM£¬·ñÔò·µ»ØÒ»¸ö´íÎóÂë¡£
3. acutToUpper()[ads_toupper()]ºÍacutToLower()[ads_tolower()] acutToUpper()ºÍacutToLower()º¯ÊýµÄ¶¨ÒåÈçÏ£º
ÕâÁ½¸öº¯Êý·Ö±ð°Ñ×Ö·û²ÎÊý(ASCIIÂëÕûÊýÖµ)ת»»Îª´óд»òСд×Ö·û¡£
4. acedTrans()[ads_trans()] acedTrans()º¯ÊýµÄ¶¨ÒåÈçÏ£º
acedTrans()º¯Êý°Ñ×ø±êµã»òÎ»ÒÆÁ¿´ÓÒ»¸ö×ø±êϵͳת»»µ½ÁíÒ»¸ö×ø±êϵͳ¡£²ÎÊýpt¼È¿É½âÊÍΪһ¸öÈýάµã£¬Ò²¿É½âÊÍΪһ¸öÈýÎ¬Î»ÒÆÊ¸Á¿¡£²ÎÊýfromÖ¸¶¨ptËùÔÚµÄ×ø±êϵͳ£¬²ÎÊýtoÖ¸¶¨×ª»»ºóµÄ×ø±êϵͳ¡£Èç¹û²ÎÊýdisp²»µÈÓÚ0£¬Ôòpt±»¿´×÷ÊÇÒ»¸öÎ»ÒÆÊ¸Á¿£¬·ñÔòptÊÇÒ»¸öµã¡£ËµÃ÷acedT
rans()º¯Êý×îºÃµÄ·½·¨ÊÇͨ¹ýÀý×Ó¡£AutoCADʹÓõÄ×ø±êϵͳ´úÂëΪ£º1±íʾWCS(ÊÀ½ç×ø±êϵͳ)£¬2±íʾµ±Ç°µÄUCS(Óû§×ø±êϵͳ)¡£AutoCAD»¹¶¨ÒåÁË2ºÍ3£¬ÕâЩֵÎÒºÜÉÙʹÓã¬Äã¿ÉÒÔ²éÔÄÓйØÎĵµ¡£ ÏÂÃæÊÇÒ»¶Î´ÓUCSת»»µ½WCSµÄ³ÌÐò´úÂ룺
ÕâÊǵÚÒ»¶ÎûÓÐʹÓýá¹û»º³åÇøÖ¸ÕëµÄ³ÌÐò´úÂë¡£ÔÚº¯ÊýÖÐÉùÃ÷½á¹û»º³åÇøÀàÐ͵ıäÁ¿Îª¾Ö²¿±äÁ¿£¬ÔÚº¯ÊýÍ˳öʱ»á×Ô¶¯Çå³ý£¬ÎÞÐèµ÷ÓÃacutRelRb()º¯Êý¡£È»¶ø£¬Çë×¢Òâ±ØÐëÔÚresbuf ±äÁ¿µÄÇ°Ãæ·ÅÉÏ&ÔËËã·û£¬ÒòΪacedTrans()º¯ÊýÐèÒªÒ»¸öÖ¸Ïò resbuf ½á¹¹µÄÖ¸Õë(»òµØÖ·)¡£
3.12 Ó¦ÓóÌÐòʵÀýCH3_2
ÔÚ±¾Ó¦ÓóÌÐòÖУ¬ÎÒÃÇÔÙ´Îʾ·¶ÁËacedGetXXX()ÀຯÊýµÄʹÓ㬻¹Ê¾·¶ÁËÑ¡Ôñ¼¯º¯ÊýµÄʹÓᣵ±Ñ»·Í¨¹ýÑ¡Ôñ¼¯Ê±£¬»¹Ê¾·¶ÁËÔõÑùÀûÓýá¹û»º³åÇøÁ´±í¸Ä±äÑ¡Ôñ¼¯ÖÐʵÌåµÄÌØÐÔ¡£ÔÚÒ»¸ö´¿´âµÄObjectARXÓ¦ÓóÌÐòÖУ¬¸Ä±äʵÌåµÄÌØÐÔÊÇÓÉÏàӦʵÌåÀàÖеÄgetºÍsetº¯ÊýÍê³ÉµÄ¡£ÎÒÃÇÏÈÀ´¹Û²ì
Ó¦ÓóÌÐòʵÀýCH3_2µÄ³ÌÐò´úÂ룬ȻºóÌÖÂÛÆäÒªµã¡£CH3_2.CPPÎļþÄÚÈÝÈçÏ£º Óû§¶¨ÒåÃüÁîCELµÄCH3_2Commands.cppÎļþÄÚÈÝÈçÏ£º
3.13 Ó¦ÓóÌÐòʵÀýCH3_2Òªµã·ÖÎö
±¾Ó¦ÓóÌÐòÄÜѡȡһ×éʵÌ壬²¢°ÑÕâЩʵÌåµÄͼ²ã¸ÄΪѡÖеÄÄ¿±êʵÌåËùÔÚµÄͼ²ã¡£ËäÈ»ÔÚAutoCAD R14/2000ÖÐÒѾ´æÔÚÀàËÆµÄÃüÁµ«ÎÒҪ˵Ã÷µÄÖ»ÊÇÑ¡Ôñ¼¯µÄʹÓá£ÔÚ¸ÃÓ¦ÓóÌÐòÖУ¬ÒªÇóÓû§Ñ¡È¡×é³ÉÑ¡Ôñ¼¯srcSSµÄʵÌ壬ÈçÏÂËùʾ£º È»ºó£¬½Ó×ŵ÷ÓÃacedEntSel()º¯ÊýѡȡĿ±êʵÌ壬ÈçÏÂËùʾ£º
Èç¹ûÒ»ÇÐÕý³££¬×îºó½«µ÷ÓÃÓû§¶¨ÒåµÄchgEntsLyr()º¯Êý£¬ÊµÏÖ³ÌÐòµÄÈ«²¿¶¯×÷¡£¸Ãº¯ÊýÒªÇóÓÐÁ½¸ö²ÎÊý£ºÒ»¸öΪʵÌ壬ÁíÒ»¸öΪѡÔñ¼¯¡£
×¢ÒâËüÃǶ¼ÊÇads_nameÀàÐ͵ÄÊý¾Ý¡£ÎÒÃDZØÐëÌáȡĿ±êʵÌåµÄÊý¾Ý£¬Õâ¿ÉÒÔµ÷ÓÃacdbEntGet()º¯ÊýÀ´ÊµÏÖ£¬¸Ãº¯Êý·µ»ØÖ¸ÕërbTargEntÖ¸ÏòµÄ½á¹û»º³å
ÇøÁ´±í¡£ÎÒÃÇʹÓýá¹û»º³åÇøÖ¸ÕërbTrav±éÀú¸ÃÁ´±í£¬ÔÚ´ËÌáÈ¡²ãÃû²¢¿½±´µ½lyrName¡£²»ÒªÊ¹Óýá¹û»º³åÇøÖ¸ÕërbTargEntÀ´±éÀú¸ÃÁ´±í£¬ÒòΪÔÚÍê³É¸Ã²Ù×÷ºó£¬ÎÞ·¨ÊÍ·ÅÓÉacdbEntGet()º¯Êý·ÖÅäµÄÄڴ桪һ¸öµäÐ͵ÄÄÚ´æÐ¹Â©´íÎ󣬼«Æäƽ³£¡£ÏÂÒ»²½ÊÇʹÓÃacedSSLength()º¯ÊýµÃµ½Ñ¡Ôñ
¼¯µÄ³¤¶È£¬Ö®ºó¾Í½øÈëÁËforÑ»·¡£ÔÚforÑ»·ÖУ¬Ê¹ÓÃacedSSName()º¯ÊýµÃµ½ÊµÌåÃû£¬²¢ÔÚssEntNameÖзµ»Ø¡£ÎÒÃÇÔÙÒ»´ÎʹÓýá¹û»º³åÇøÖ¸ÕërbTrav±éÀú¸ÃÁ´±í£¬µ±µ½´ïͼ²ã½á¹û»º³åÇøÊ±£¬°ÑrbTrav->resval.rstringµÄÖµ¸ÄΪlyrName¡£×¢ÒâÎÒÃÇΪºÎʹÓÃacdbEntMod(rbSSEnt)
º¯Êý¸üÐÂʵ
Ì塣ʹÓýá¹û»º³åÇørbSSEnt¸üÐÂʵÌåÊÇÒòΪrbSSEntÊǽá¹û»º³åÇøÁ´±í£¬¶ørbTravÖ»ÊÇÓÃÀ´±éÀú¸ÃÁ´±íµÄ½á¹û»º³åÇøÖ¸Õë¡£ÔÚforÑ»·¿ªÊ¼ÏÂÒ»ÂÖÑ»·Ö®Ç°£¬ÊÍ·ÅrbSSEnt»º³åÇø¡£Ò»µ©´Óº¯Êýµ÷Ó÷µ»Ø£¬ÔÚÍ˳öÓ¦ÓóÌÐò֮ǰ£¬µ÷ÓÃacedSSFree()º¯Êý¡£¿É±ðÍüÁËÊÍ·ÅÑ¡Ôñ¼¯¡£
3.14 Ó¦ÓóÌÐòʵÀýCH3_3
±¾Ó¦ÓóÌÐòʾ·¶ÁËÔõÑù¶ÔÑ¡Ôñ¼¯Ê¹ÓÃads_matrixÊý¾ÝÀàÐ͵ľØÕóºÍÔõÑùʹÓöÔads_matrixÊý¾ÝÀàÐͽøÐвÙ×÷µÄÑ¡Ôñ¼¯º¯ÊýacedXformSS()¡£ÀûÓþØÕ󣬿ÉÒÔ±ÈÀý±ä»»¡¢Ðýת¡¢¾µÏñ¡¢Æ½ÒÆ£¬¿ÉÒÔÈÆX¡¢Y»òZÖáÐýת¡£ÔÚ¸ÃÓ¦ÓóÌÐòÖУ¬ÎÒÃǽöʾÀýÁ˱ÈÀý±ä»»¡£CH3_3.CPPÎļþÄÚÈÝÈçÏ£º
Óû§¶¨ÒåÃüÁîTSSµÄCH3_3Commands.cppÎļþÄÚÈÝÈçÏ£º
3.15 Ó¦ÓóÌÐòʵÀýCH3_3Òªµã·ÖÎö
ÔÚtss()(ת»»Ñ¡Ôñ¼¯)º¯ÊýÖУ¬ÓÐÒ»¸öads_matrixÊý¾ÝÀàÐ͵ıäÁ¿xformºÍÒ»¸öÑ¡Ôñ¼¯ssGrp¡£Ê¹ÓÃacedSSGet()º¯ÊýÇëÇóÓû§Ñ¡ÔñÒ»×éʵÌå¡£Èç¹ûÑ¡Ôñ³É¹¦£¬½«°ÑʵÌå·ÅÔÚÑ¡Ôñ¼¯ssGrpÖС£È»ºó£¬Ê¹ÓÃacedGetReal()º¯ÊýÇëÇóÓû§ÊäÈëÒ»±ÈÀýϵÊý£¬×¢ÒâÎÒÃÇÊÇÔõÑù³õʼ»¯acedInitGet()º¯ÊýµÄ
¡£¼ÈÈ»ÎÒÃÇÓÐÁËÒ»¸öÓÐЧµÄÑ¡Ôñ¼¯ºÍÒ»¸ö±ÈÀýϵÊý£¬ÎÒÃǾͿÉÒÔµ÷ÓÃÓû§¶¨ÒåµÄident_init()º¯Êý³õʼ»¯¾ØÕó£¬ÕâÊÇÒ»¸öǶÌ×µÄforÑ»·£¬
°ÑËùÓеľØÕóÔªËØ³õʼ»¯Îª0.0¡£È»ºóÔÙÓÃÒ»¸öforÑ»·£¬°ÑǰÈýÁжԽÇÏßÉϵÄÔªËØ³õʼ»¯Îª1.0¡£±»³õʼ»¯Îª1.0µÄÔªËØÊÇid[0][0]¡¢id[1][1]ºÍid[2][
2]¡£ÔÚ¾ØÕóÍê³É³õʼ»¯ÒÔºó£¬ÎÒÃÇÓÃsfÖеıÈÀýϵÊýÀ´Ìæ´úÕâÈý¸öÔªËØµÄÖµ¡£ÎÒÃÇÎÞÐëʹÓÃforÑ»·±éÀúÑ¡Ôñ¼¯£¬Ö»Ðè¼òµ¥µØµ÷ÓÃacedXformSS(ssGrp,xform)º¯Êý£¬Õ⽫һ´Î¸Ä±äÑ¡Ôñ¼¯ÖÐËùÓÐʵÌåµÄ±ÈÀýϵÊý¡£ÔÚObjectARXµÄ¼¸ºÎÀàAcGe-ÖÐÓÐÐí¶à¾ØÕóת»»²Ù×÷º¯Êý¡£ ÓÐÐí¶àADSº¯ÊýÎÒÎ´Éæ¼°(»òδÏêϸÌÖÂÛ)£¬Ö÷ÒªÊÇÒòΪÕâЩº¯ÊýÕë¶ÔADS/CÐÎʽµÄ±à³Ì£¬ObjectARXÓÐËü×Ô¼ºµÄ¶¨Ò壬Æä±à³ÌÐÎʽÍêÉÆ
µÃ¶à(²¢·ÇÎÒÓÐÆ«¼û)¡£ÎÒÎ´Éæ¼°µ½µÄADSº¯ÊýÓУºacedDefun()¡¢acedGetFunCode()¡¢acedRegFund()¡¢acedInvoke()¡¢acedGetArgs()¡¢acdbEntDel()¡¢
acdbEn
tMod()¡¢acdbEntNext()¡¢acdbEntGet()¡¢acdbEntUpd()ºÍacdbHandEnt()£¬µÈµÈ¡£ÎÒËùÌÖÂÛµÄADSRXº¯ÊýÊÇÔÚObjectARXÖÐʹÓÿÉÄÜÐÔ×î´óµÄº¯Êý¡£
//////////////////////////////////////////////////////////////////////////////////////////////////////