• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Life is Good.

            Enhance Tech and English
            隨筆 - 65, 文章 - 20, 評(píng)論 - 21, 引用 - 0
            數(shù)據(jù)加載中……

            How to Use (handent …) Safely

            Caution around (handent …) Function

             

            If not used carefully, this function can easily generate “bad argument type: stringp nil” or “bad argument type: lentityp nil” errors in our product. The purpose of this function is to convert a hexadecimal text string value that represents an object “handle” ID into an entity name assignment. AutoCAD uses this entity name to access the target object in the drawing. This ascii text string is the function’s only argument.

             

            The most serious problem occurs immediately if the passed string value is nil. Our program will exit with a “bad argument type: stringp nil” error.  

            A real-world example: here is a line of code that triggered a recent regression ():

             

                        (setq layername (cdr (assoc 8 (entget (handent entname)))))

             

            In this example, the variable “netwire” could, under certain conditions, be passed as a value of nil instead of as an ASCII text string giving the handle number. The function (handent netwire) that is embedded in the line of code above fails with the error message “bad argument type: lentityp nil”. You can simulate this at the command line. Type in this sequence:  (setq netwire nil) [Enter] and then (handent netwire) [Enter].

             

            The above line of code has a second potential problem. Even if “netwire” is not nil but is an ASCII text string, it might not convert to a valid entity name in the active drawing. In this case, the (handent…) function will not fail but will simply return nil. But, this creates a downstream problem. The nil value gets passed to the (entget…) function. When passed a nil value instead of a valid entity name, the (entget…) function fails. The program stops with the error “bad argument: lentityp nil”. You can simulate this at the command line by typing this:  (entget (handent “ABCD1234”)) [Enter]

             

             

            How to Use (handent …) Safely

             

            In the above example, two checks are needed. First check is to make sure that “netwire” is not a nil value. The second is that “netwire” is a valid handle ID for an entity in the target drawing. So, these two checks might be coded up like this:

             

            (if (AND entname(handent entname) (entget (handent entname))) (setq layername (cdr (assoc 8 (entget (handent entname))))))

             

            … or, a written a bit more efficiently…

             

            (if (AND entname(setq en (handent entname)) (entget en)) (setq layername (cdr (assoc 8 (entget en)))))

            posted on 2008-07-31 15:00 Mike Song 閱讀(366) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品a亚洲国产v高清不卡| 亚洲欧美日韩中文久久| 国内精品久久久久久中文字幕| 国内精品欧美久久精品| 久久久久久久精品妇女99| 亚洲精品乱码久久久久久蜜桃图片 | 麻豆久久| 精品久久无码中文字幕| 亚洲精品国精品久久99热| 久久99精品久久久久久动态图| 久久精品人妻一区二区三区| 波多野结衣AV无码久久一区| 亚洲∧v久久久无码精品| 97久久精品无码一区二区天美| 久久精品无码一区二区app| 亚洲国产精品成人久久| 久久99精品国产麻豆不卡| 久久婷婷五月综合97色一本一本 | 亚洲国产成人久久一区久久| 久久精品国产亚洲av麻豆小说| 久久这里有精品视频| 青青青青久久精品国产 | 一本久久久久久久| 嫩草伊人久久精品少妇AV| 日产精品久久久久久久| 久久激情五月丁香伊人| 免费国产99久久久香蕉| 色综合久久久久无码专区| 2020国产成人久久精品| 久久综合精品国产一区二区三区 | 国产精品一区二区久久精品无码 | 精品久久久无码人妻中文字幕| 国产精品日韩欧美久久综合| 99久久夜色精品国产网站| 久久99精品国产99久久6男男| 欧美丰满熟妇BBB久久久| 一本一本久久a久久综合精品蜜桃| 久久久青草青青国产亚洲免观| 国产精品久久久久久久午夜片 | 国产精品国色综合久久| 国产情侣久久久久aⅴ免费|