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

            久久91亚洲人成电影网站| 亚洲精品高清久久| 久久精品人妻中文系列| 亚洲va久久久噜噜噜久久狠狠| 99精品久久久久久久婷婷| 久久人人爽人人爽人人AV东京热| 国产一级持黄大片99久久| 日本精品久久久久影院日本| 亚洲欧美日韩中文久久| 久久成人精品| 久久精品国产免费| 精品久久人人爽天天玩人人妻| 国产成人久久777777| 久久精品亚洲日本波多野结衣 | 91超碰碰碰碰久久久久久综合| 狠狠色丁香婷婷久久综合五月| 久久青青草原精品影院| 亚洲午夜久久久久久久久电影网 | 思思久久99热只有频精品66| 国产成人精品免费久久久久| 久久久久久亚洲精品不卡| 精品国产福利久久久| 久久久婷婷五月亚洲97号色 | 日韩精品无码久久久久久| 久久人人爽人人澡人人高潮AV | 久久精品国产亚洲αv忘忧草| 亚洲国产精品人久久| 久久国产亚洲高清观看| 久久丫精品国产亚洲av| 亚洲精品乱码久久久久久中文字幕| 久久精品国产清自在天天线| 九九久久99综合一区二区| 国内精品久久久久影院日本| 久久久久亚洲AV无码专区体验| 囯产极品美女高潮无套久久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 一级做a爰片久久毛片免费陪| 久久久久亚洲精品男人的天堂| 国产福利电影一区二区三区,免费久久久久久久精 | 久久国产乱子伦精品免费强| 久久亚洲私人国产精品vA|