• <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, 評論 - 21, 引用 - 0
            數據加載中……

            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 閱讀(365) 評論(0)  編輯 收藏 引用

            久久99精品久久久久久野外| 久久露脸国产精品| 亚洲伊人久久精品影院| 欧美丰满熟妇BBB久久久| 久久ZYZ资源站无码中文动漫| 99久久99久久| 日本亚洲色大成网站WWW久久| 无码人妻精品一区二区三区久久 | 国产精品久久久久久久久久免费| 国产午夜精品久久久久九九| 久久人妻少妇嫩草AV蜜桃| 国产一级持黄大片99久久| 亚洲国产天堂久久久久久| 久久er国产精品免费观看2| 亚洲国产精品狼友中文久久久| 久久国产精品一区二区| 日韩欧美亚洲综合久久| 亚洲嫩草影院久久精品| 久久久久久亚洲Av无码精品专口| 久久久久亚洲AV成人网人人网站 | 国产伊人久久| 国产精品久久久久久福利69堂| 亚洲人成无码网站久久99热国产| 久久精品一区二区三区不卡| 亚洲色欲久久久综合网| 久久久久人妻一区精品果冻| 久久er国产精品免费观看2| 亚洲AV无码久久精品成人| 亚洲国产精品无码久久九九| A级毛片无码久久精品免费| 国产精品国色综合久久| 久久精品免费一区二区| 色综合合久久天天给综看| 久久久精品国产Sm最大网站| www亚洲欲色成人久久精品| 久久久综合九色合综国产| 蜜臀av性久久久久蜜臀aⅴ| 久久久久人妻精品一区| 久久精品国产亚洲精品2020 | 久久精品人人槡人妻人人玩AV| 99久久国产宗和精品1上映|