Jump to content
InfoFile
Tác giả: tdvn
Bài viết gốc: 56150
Tên lệnh: wbr
muốn chia 1 đoạn cong thành nhiều đoạn cong
Mình ðã sửa lại cho bạn ðây. Về các kiểu bắt dính thì bạn có thể chỉnh lại theo ý mình bằng cách. Ðánh lệnh ds, sau ðó chọn các kiểu thích hợp. chọn OK. Sau ðó tại dòng command: ðánh osmode. Ví dụ
Command: osmode
Enter new value for OSMODE <2600>:
dùng giá trị 2600 ở trên nhập vào vị trí của dòng (setvar "osmode" 2600) trong lisp.

Filename: 56150_wbr.lsp
Tác giả: q288
Bài viết gốc: 56230
Tên lệnh: chk
Nhờ các bạn lisp overshoot và undershoot


Bạn thử dùng code sau đây xem sao. Ten lệnh chk.


Filename: 56230_chk.lsp
Tác giả: dunguss3581
Bài viết gốc: 199458
Tên lệnh: vtn
vẽ pline theo danh sách.

tui dang dùng lisp viết lệnh vẽ trắc ngang. đọc file số liệu ntd. vì list được tạo ra sau nhiều vòng while và khi gặp điều kiện thỏa mãn thì thực hiện lệnh vẽ pline. tui còn đang làm dở dang nhưng cũng up lên cho bác hiểu ý tưởng của tui.http://www.cadviet.c..._dau_vaontd.txt http://www.cadviet.c...6914_ketqua.dwg

Filename: 199458_vtn.lsp
Tác giả: Tue_NV
Bài viết gốc: 43373
Tên lệnh: dcen
Xin mọi người giúp đỡ Lisp Center mark.

Hình vẽ bạn nên lưu dưới đuôi .jpg và khi upload lên diễn đàn bạn nên kiểm tra xem hình vẽ của bạn đã được upload chưa?
Hình vẽ của bạn bấm vào không thấy gì cả. Chỉ thấy dòng chữ này : Concurrent download limit exceeded.
bạn kiểm tra lại hình vẽ minh hoạ của bạn lại nhé.

Mình mới viết được đoạn Code này, hy vọng nó chạy theo đúng ý bạn.
Bạn có thể...
>>

Hình vẽ bạn nên lưu dưới đuôi .jpg và khi upload lên diễn đàn bạn nên kiểm tra xem hình vẽ của bạn đã được upload chưa?
Hình vẽ của bạn bấm vào không thấy gì cả. Chỉ thấy dòng chữ này : Concurrent download limit exceeded.
bạn kiểm tra lại hình vẽ minh hoạ của bạn lại nhé.

Mình mới viết được đoạn Code này, hy vọng nó chạy theo đúng ý bạn.
Bạn có thể thay đổi phần dư ra khỏi đường tròn bằng cách khai lại biến KC
Tên lệnh là : Dcen


Chúc thành công.
<<

Filename: 43373_dcen.lsp
Tác giả: ketxu
Bài viết gốc: 199565
Tên lệnh: ts
lisp tự tăng tới số cho trước và lập lại tăng dần
File lỗi :), yêu cầu chưa rõ ràng. Bạn chọn 1 dãy text, nhập số bắt đầu, nhập số tăng (101-> 148), vậy từ 148 ->201 là theo quy luật nào ? Số bắt đầu + thêm 100 à ?
Bạn xem ví dụ :

(defun c:ts(/ i0 ic inc it)
(vl-load-com)
(if (ssget '((0 . "*TEXT")))
(progn
(setq
...
>>
File lỗi :), yêu cầu chưa rõ ràng. Bạn chọn 1 dãy text, nhập số bắt đầu, nhập số tăng (101-> 148), vậy từ 148 ->201 là theo quy luật nào ? Số bắt đầu + thêm 100 à ?
Bạn xem ví dụ :

(defun c:ts(/ i0 ic inc it)
(vl-load-com)
(if (ssget '((0 . "*TEXT")))
(progn
(setq
i0 (1- (getint "\nSo bat dau :")) it i0
ic (getint "\nSo dung lai :")
inc 100 ;thay so 100 bang (getint "\nGia so :") neu muon nhap
)
(vlax-for objTxt (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(if (< i0 ic)(setq i0 (1+ i0))
(setq it (+ inc it) i0 (1+ it) ic (+ ic inc))
)
(vla-put-textstring objTxt i0)
)
)
)
)

<<

Filename: 199565_ts.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 199557
Tên lệnh: ha
Tác giả: Doan Van Ha
Bài viết gốc: 199651
Tên lệnh: xxx
Sửa giúp lisp này

Bạn Truong_AAn: ngoài chuyện không cho vào thể code thì bạn còn mắc thêm 1 lỗi nữa là đặt tiêu đề topic không đúng.
Sửa cho bạn boycodonxxxx đây. Lần sau có hỏi gì thì cứ post lên CV, chứ không cần nhắn tin đâu boycodonxxxx nhé (trừ những trường hợp quá đặc biệt), vì CV là trí tuệ tập thể.

Filename: 199651_xxx.lsp
Tác giả: Thaistreetz
Bài viết gốc: 199681
Tên lệnh: var1nil%3Blenhnaychayobanvethunhat%0D%0A var2
- Lisp so sánh sự khác nhau giữa các biến hệ thống của 2 bản vẽ
Đôi khi chúng ta có nhu cầu cần so sánh các thiết lập biến hệ thống giữa 2 bản vẽ xem chúng khác nhau những gì. Đây là lisp mình fát triển từ lisp của bác Doan Van Ha trong bài viết số 2 topic Lisp theo dõi sự thay đổi biến hệ thống trong quá trình vẽ (Topic này cũng do mình lập - em kể công tí :D)
>>
Đôi khi chúng ta có nhu cầu cần so sánh các thiết lập biến hệ thống giữa 2 bản vẽ xem chúng khác nhau những gì. Đây là lisp mình fát triển từ lisp của bác Doan Van Ha trong bài viết số 2 topic Lisp theo dõi sự thay đổi biến hệ thống trong quá trình vẽ (Topic này cũng do mình lập - em kể công tí :D)
Hướng dẫn sử dụng:
- Bạn cần tải lisp này vào cả 2 bản vẽ cần thực hiện so sánh
- Bản vẽ thứ nhất bạn gọi lệnh Var1. kết quả: nó báo cho bạn "Đã lấy được toàn bộ danh sách và giá trị biến hệ thống của bản vẽ thứ nhất"
- Chuyển sang bản vẽ thứ 2 bạn gõ lệnh Var2. lệnh này làm công việc tương tự như của lệnh var1 là lấy toàn bộ giá trị biến hệ thống của bản vẽ thứ 2. Đồng thời nó thực hiện công việc so sánh với giá trị của các biến hệ thống bản vẽ thứ nhất. Nếu biến nào có giá trị khác nó sẽ thống kê ra màn hình cho bạn.

;Chu y: mot so System Variables khong can quan tam, nhu: "CDATE" "DATE" "LASTPROMPT" "TDINDWG" "TDUSRTIMER" "UNDOCTL"...
;;; Edit by Thaistreetz - Cadviet.com
(defun C:var1 nil ; Lenh nay chay o ban ve thu nhat
(setq lstvar1 nil)
(foreach var lstvar
(if (getvar var) (setq lstvar1 (cons (cons var (getvar var)) lstvar1))))
(setq lstvar1 (reverse lstvar1))
(vl-propagate 'lstvar1)
(prompt "\nDa lay duoc toan bo thong tin bien he thong ban ve thu nhat")
(princ))
(defun C:var2 (/ lstvar2 lv1 lv2 x) ; Lenh nay chay o ban ve thu 2
(if lstvar1
(progn
(princ "\n")
(foreach var lstvar (if (getvar var) (setq lstvar2 (cons (cons var (getvar var)) lstvar2))))
(setq lv1 (list-exclusive lstvar1 lstvar2) lv2 (list-exclusive lstvar2 lstvar1))
(foreach var lv1
(if (setq x (assoc (car var) lv2))
(progn (princ (car var)) (princ "\t") (princ (cdr var)) (princ "\t") (princ (cdr x)) (princ "\n") (setq lv2 (vl-remove x lv2)))
(progn (princ (car var)) (princ "\t") (princ (cdr var)) (princ "\t") (princ "nil") (princ "\n"))))
(foreach var lv2 (princ (car var)) (princ "\t") (princ (cdr var)) (princ "\t") (princ "nil") (princ "\n")))
(prompt "khong co danh sach bien he thong cua ban ve thu nhat de so sanh"))
(princ))
; lay cac phan tu khong thuoc giao cua 2 danh sach
(defun list-exclusive (lst1 lst2) (if lst1 (if (member (car lst1) lst2) (list-exclusive (cdr lst1) lst2) (cons (car lst1) (list-exclusive (cdr lst1) lst2)))))
;----- System Variables of Cad2007.
(setq lstvar (list
"3DDWFPREC"
"ACADLSPASDOC"
"ACADPREFIX"
"ACADVER"
"ACISOUTVER"
"ADCSTATE"
"AFLAGS"
"ANGBASE"
"ANGDIR"
"APBOX"
"APERTURE"
"APSTATE"
"AREA"
"ASSISTSTATE"
"ATTDIA"
"ATTMODE"
"ATTREQ"
"AUDITCTL"
"AUNITS"
"AUPREC"
"AUTOSNAP"
"BACKGROUNDPLOT"
"BACKZ"
"BACTIONCOLOR"
"BDEPENDENCYHIGHLIGHT"
"BGRIPOBJCOLOR"
"BGRIPOBJSIZE"
"BINDTYPE"
"BLIPMODE"
"BLOCKEDITLOCK"
"BLOCKEDITOR"
"BPARAMETERCOLOR"
"BPARAMETERFONT"
"BPARAMETERSIZE"
"BTMARKDISPLAY"
"BVMODE"
"CALCINPUT"
"CAMERADISPLAY"
"CAMERAHEIGHT"
"CDATE"
"CECOLOR"
"CELTSCALE"
"CELTYPE"
"CELWEIGHT"
"CENTERMT"
"CHAMFERA"
"CHAMFERB"
"CHAMFERC"
"CHAMFERD"
"CHAMMODE"
"CIRCLERAD"
"CLAYER"
"CLEANSCREENSTATE"
"CLISTATE"
"CMATERIAL"
"CMDACTIVE"
"CMDDIA"
"CMDECHO"
"CMDINPUTHISTORYMAX"
"CMDNAMES"
"CMLJUST"
"CMLSCALE"
"CMLSTYLE"
"COMPASS"
"COORDS"
"CPLOTSTYLE"
"CPROFILE"
"CROSSINGAREACOLOR"
"CSHADOW"
"CTAB"
"CTABLESTYLE"
"CURSORSIZE"
"CVPORT"
"DASHBOARDSTATE"
"DATE"
"DBCSTATE"
"DBLCLKEDIT"
"DBMOD"
"DCTCUST"
"DCTMAIN"
"DEFAULTLIGHTING"
"DEFAULTLIGHTINGTYPE"
"DEFLPLSTYLE"
"DEFPLSTYLE"
"DELOBJ"
"DEMANDLOAD"
"DIASTAT"
"DIMADEC"
"DIMALT"
"DIMALTD"
"DIMALTF"
"DIMALTRND"
"DIMALTTD"
"DIMALTTZ"
"DIMALTU"
"DIMALTZ"
"DIMAPOST"
"DIMARCSYM"
"DIMASO"
"DIMASSOC"
"DIMASZ"
"DIMATFIT"
"DIMAUNIT"
"DIMAZIN"
"DIMBLK"
"DIMBLK1"
"DIMBLK2"
"DIMCEN"
"DIMCLRD"
"DIMCLRE"
"DIMCLRT"
"DIMDEC"
"DIMDLE"
"DIMDLI"
"DIMDSEP"
"DIMEXE"
"DIMEXO"
"DIMFIT"
"DIMFRAC"
"DIMFXL"
"DIMFXLON"
"DIMGAP"
"DIMJOGANG"
"DIMJUST"
"DIMLDRBLK"
"DIMLFAC"
"DIMLIM"
"DIMLTYPE"
"DIMLTEX1"
"DIMLTEX2"
"DIMLUNIT"
"DIMLWD"
"DIMLWE"
"DIMPOST"
"DIMRND"
"DIMSAH"
"DIMSCALE"
"DIMSD1"
"DIMSD2"
"DIMSE1"
"DIMSE2"
"DIMSHO"
"DIMSOXD"
"DIMSTYLE"
"DIMTAD"
"DIMTDEC"
"DIMTFAC"
"DIMTFILL"
"DIMTFILLCLR"
"DIMTIH"
"DIMTIX"
"DIMTM"
"DIMTMOVE"
"DIMTOFL"
"DIMTOH"
"DIMTOL"
"DIMTOLJ"
"DIMTP"
"DIMTSZ"
"DIMTVP"
"DIMTXSTY"
"DIMTXT"
"DIMTZIN"
"DIMUNIT"
"DIMUPT"
"DIMZIN"
"DISPSILH"
"DISTANCE"
"DONUTID"
"DONUTOD"
"DRAGMODE"
"DRAGP1"
"DRAGP2"
"DRAGVS"
"DRAWORDERCTL"
"DRSTATE"
"DTEXTED"
"DWFFRAME"
"DWFOSNAP"
"DWGCHECK"
"DWGCODEPAGE"
"DWGNAME"
"DWGPREFIX"
"DWGTITLED"
"DYNDIGRIP"
"DYNDIVIS"
"DYNMODE"
"DYNPICOORDS"
"DYNPIFORMAT"
"DYNPIVIS"
"DYNPROMPT"
"DYNTOOLTIPS"
"EDGEMODE"
"ELEVATION"
"ENTERPRISEMENU"
"ERRNO"
"ERSTATE"
"EXPERT"
"EXPLMODE"
"EXTMAX"
"EXTMIN"
"EXTNAMES"
"FACETRATIO"
"FACETRES"
"FIELDDISPLAY"
"FIELDEVAL"
"FILEDIA"
"FILLETRAD"
"FILLMODE"
"FONTALT"
"FONTMAP"
"FRONTZ"
"FULLOPEN"
"FULLPLOTPATH"
"GRIDDISPLAY"
"GRIDMAJOR"
"GRIDMODE"
"GRIDUNIT"
"GRIPBLOCK"
"GRIPCOLOR"
"GRIPDYNCOLOR"
"GRIPHOT"
"GRIPHOVER"
"GRIPOBJLIMIT"
"GRIPS"
"GRIPSIZE"
"GRIPTIPS"
"GTAUTO"
"GTDEFAULT"
"GTLOCATION"
"HALOGAP"
"HANDLES"
"HIDEPRECISION"
"HIDETEXT"
"HIGHLIGHT"
"HPANG"
"HPASSOC"
"HPBOUND"
"HPDOUBLE"
"HPDRAWORDER"
"HPGAPTOL"
"HPINHERIT"
"HPNAME"
"HPOBJWARNING"
"HPORIGIN"
"HPORIGINMODE"
"HPSCALE"
"HPSEPARATE"
"HPSPACE"
"HYPERLINKBASE"
"IMAGEHLT"
"IMPLIEDFACE"
"INDEXCTL"
"INETLOCATION"
"INPUTHISTORYMODE"
"INSBASE"
"INSNAME"
"INSUNITS"
"INSUNITSDEFSOURCE"
"INSUNITSDEFTARGET"
"INTELLIGENTUPDATE"
"INTERFERECOLOR"
"INTERFEREOBJVS"
"INTERFEREVPVS"
"INTERSECTIONCOLOR"
"INTERSECTIONDISPLAY"
"ISAVEBAK"
"ISAVEPERCENT"
"LASTANGLE"
"LASTPOINT"
"LASTPROMPT"
"LATITUDE"
"LAYERFILTERALERT"
"LAYOUTREGENCTL"
"LEGACYCTRLPICK"
"LENSLENGTH"
"LIGHTGLYPHDISPLAY"
"LIGHTLISTSTATE"
"LIMCHECK"
"LIMMAX"
"LIMMIN"
"LISPINIT"
"LOCALE"
"LOCALROOTPREFIX"
"LOCKUI"
"LOFTANG1"
"LOFTANG2"
"LOFTMAG1"
"LOFTMAG2"
"LOFTNORMALS"
"LOFTPARAM"
"LOGFILEMODE"
"LOGFILENAME"
"LOGFILEPATH"
"LOGINNAME"
"LONGITUDE"
"LTSCALE"
"LUNITS"
"LUPREC"
"LWDEFAULT"
"LWDISPLAY"
"LWUNITS"
"ISOLINES"
"MATSTATE"
"MAXACTVP"
"MAXSORT"
"MBUTTONPAN"
"MEASUREINIT"
"MEASUREMENT"
"MENUCTL"
"MENUECHO"
"MENUNAME"
"MIRRTEXT"
"MODEMACRO"
"MSMSTATE"
"MSOLESCALE"
"MTEXTED"
"MTEXTFIXED"
"MTJIGSTRING"
"MYDOCUMENTSPREFIX"
"NOMUTT"
"NORTHDIRECTION"
"OBSCUREDCOLOR"
"OBSCUREDLTYPE"
"OFFSETDIST"
"OFFSETGAPTYPE"
"OLEFRAME"
"OLEHIDE"
"OLEQUALITY"
"OLESTARTUP"
"OPMSTATE"
"ORTHOMODE"
"OSMODE"
"OSNAPCOORD"
"OSNAPHATCH"
"OSNAPZ"
"OSOPTIONS"
"PALETTEOPAQUE"
"PAPERUPDATE"
"PDMODE"
"PDSIZE"
"PEDITACCEPT"
"PELLIPSE"
"PERIMETER"
"PERSPECTIVE"
"PFACEVMAX"
"PICKADD"
"PICKAUTO"
"PICKBOX"
"PICKDRAG"
"PICKFIRST"
"PICKSTYLE"
"PLATFORM"
"PLINEGEN"
"PLINETYPE"
"PLINEWID"
"PLOTOFFSET"
"PLOTROTMODE"
"PLQUIET"
"POLARADDANG"
"POLARANG"
"POLARDIST"
"POLARMODE"
"POLYSIDES"
"POPUPS"
"PREVIEWEFFECT"
"PREVIEWFILTER"
"PRODUCT"
"PROGRAM"
"PROJECTNAME"
"PROJMODE"
"PROXYGRAPHICS"
"PROXYNOTICE"
"PROXYSHOW"
"PROXYWEBSEARCH"
"PSLTSCALE"
"PSOLHEIGHT"
"PSOLWIDTH"
"PSTYLEMODE"
"PSTYLEPOLICY"
"PSVPSCALE"
"PUBLISHALLSHEETS"
"PUCSBASE"
"QCSTATE"
"QTEXTMODE"
"RASTERDPI"
"RASTERPREVIEW"
"RECOVERYMODE"
"REFEDITNAME"
"REGENMODE"
"RE-INIT"
"REMEMBERFOLDERS"
"RENDERPREFSSTATE"
"REPORTERROR"
"ROAMABLEROOTPREFIX"
"RTDISPLAY"
"SAVEFILE"
"SAVEFILEPATH"
"SAVENAME"
"SAVETIME"
"SCREENBOXES"
"SCREENMODE"
"SCREENSIZE"
"SDI"
"SELECTIONAREA"
"SELECTIONAREAOPACITY"
"SELECTIONPREVIEW"
"SHADEDGE"
"SHADEDIF"
"SHADOWPLANELOCATION"
"SHORTCUTMENU"
"SHOWHIST"
"SHOWLAYERUSAGE"
"SHPNAME"
"SIGWARN"
"SKETCHINC"
"SKPOLY"
"SNAPANG"
"SNAPBASE"
"SNAPISOPAIR"
"SNAPMODE"
"SNAPSTYL"
"SNAPTYPE"
"SNAPUNIT"
"SOLIDCHECK"
"SOLIDHIST"
"SPLFRAME"
"SPLINESEGS"
"SPLINETYPE"
"SSFOUND"
"SSLOCATE"
"SSMAUTOOPEN"
"SSMPOLLTIME"
"SSMSHEETSTATUS"
"SSMSTATE"
"STANDARDSVIOLATION"
"STARTUP"
"STEPSIZE"
"STEPSPERSEC"
"SUNPROPERTIESSTATE"
"SUNSTATUS"
"SURFTAB1"
"SURFTAB2"
"SURFU"
"SURFTYPE"
"SURFV"
"SYSCODEPAGE"
"TABLEINDICATOR"
"TABMODE"
"TARGET"
"TBCUSTOMIZE"
"TDCREATE"
"TDINDWG"
"TDUCREATE"
"TDUPDATE"
"TDUSRTIMER"
"TDUUPDATE"
"TEMPOVERRIDES"
"TEMPPREFIX"
"TEXTEVAL"
"TEXTFILL"
"TEXTQLTY"
"TEXTSIZE"
"TEXTSTYLE"
"THICKNESS"
"TILEMODE"
"TIMEZONE"
"TOOLTIPMERGE"
"TOOLTIPS"
"TPSTATE"
"TRACEWID"
"TRACKPATH"
"TRAYICONS"
"TRAYNOTIFY"
"TRAYTIMEOUT"
"TREEDEPTH"
"TREEMAX"
"TRIMMODE"
"TSPACEFAC"
"TSPACETYPE"
"TSTACKALIGN"
"TSTACKSIZE"
"UCSAXISANG"
"UCSBASE"
"UCSDETECT"
"UCSFOLLOW"
"UCSICON"
"UCSNAME"
"UCSORG"
"UCSORTHO"
"UCSVIEW"
"UCSVP"
"UCSXDIR"
"UCSYDIR"
"UNDOCTL"
"UNDOMARKS"
"UNITMODE"
"UPDATETHUMBNAIL"
"USERI1-5"
"USERR1-5"
"USERS1-5"
"VIEWCTR"
"VIEWDIR"
"VIEWMODE"
"VIEWSIZE"
"VIEWTWIST"
"VISRETAIN"
"VPMAXIMIZEDSTATE"
"VSBACKGROUNDS"
"VSEDGECOLOR"
"VSEDGEJITTER"
"VSEDGEOVERHANG"
"VSEDGES"
"VSEDGESMOOTH"
"VSFACECOLORMODE"
"VSFACEHIGHLIGHT"
"VSFACEOPACITY"
"VSFACESTYLE"
"VSHALOGAP"
"VSHIDEPRECISION"
"VSINTERSECTIONCOLOR"
"VSINTERSECTIONEDGES"
"VSINTERSECTIONLTYPE"
"VSISOONTOP"
"VSLIGHTINGQUALITY"
"VSMATERIALMODE"
"VSMAX"
"VSMIN"
"VSMONOCOLOR"
"VSOBSCUREDCOLOR"
"VSOBSCUREDEDGES"
"VSOBSCUREDLTYPE"
"VSSHADOWS"
"VSSILHEDGES"
"VSSILHWIDTH"
"VSSTATE"
"VTDURATION"
"VTENABLE"
"VTFPS"
"WHIPARC"
"WHIPTHREAD"
"WINDOWAREACOLOR"
"WMFBKGND"
"WMFFOREGND"
"WORLDUCS"
"WORLDVIEW"
"WRITESTAT"
"WSCURRENT"
"XCLIPFRAME"
"XEDIT"
"XFADECTL"
"XLOADCTL"
"XLOADPATH"
"XREFCTL"
"XREFNOTIFY"
"XREFTYPE"
"ZOOMFACTOR"
"ZOOMWHEEL"))

Mình lưu ý luôn 1 vài nhược điểm của lisp này:
- Do danh sách biến hệ thống được thống kê thủ công, nên có thể sót 1 vài biến không được kiểm tra. Đồng thời 1 vài biến chúng ta không quan tâm vì nó luôn thay đổi tại mỗi thời điểm cũng không được đưa vào so sánh.
- Danh sách này bác DVH lấy dựa vào danh sách các biến hệ thống của cad 2007, nó chạy tốt với các bản cad 2007-2010. từ bản 2011 trở lên autodesk đã có 1 số thay đổi lớn về giao diện và cách thức autocad tương tác với người dùng nên một số biến hệ thống liên quan có thể không còn tồn tại ở các bản cad này. bạn cần remove nó khỏi danh sách trong lisp để tránh lỗi có thể sảy ra. tương tự với các bản cad đời thấp. sẽ không có 1 số biến của cad 2007 cũng cần fải remove đi mới chạy được.
- code mình viết sơ bộ, chủ yếu để triển khai ý tưởng nên chỉ thông báo kết quả ra cửa sổ command của cad. tốt nhất các bạn nên sửa lại để thống kê ra file text giúp kiểm tra sự khác nhau được dễ dàng hơn.
<<

Filename: 199681_var1nil%3Blenhnaychayobanvethunhat%0D%0A_var2.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 6091
Tên lệnh: dcl
Viết Lisp theo yêu cầu

Tôi sửa dòng lệnh
(setq dolondaucatt (getstring (strcat"\nDo lon mui ten <" dolondaucatt "> :")))
thành:
(setq tmp (getstring (strcat"\nDo lon mui ten <" dolondaucatt "> :")))

Và thêm dòng lệnh
(if (/= tmp "") (setq dolondaucatt tmp))

Có 2 dòng lệnh của bạn bị thừa (tôi đã cho dấu chấm phẩy ở trước). Sở dĩ thừa do bạn thừa từ hàm Initget (tôi cũng đã sửa lại).

Đoạn...
>>

Tôi sửa dòng lệnh
(setq dolondaucatt (getstring (strcat"\nDo lon mui ten <" dolondaucatt "> :")))
thành:
(setq tmp (getstring (strcat"\nDo lon mui ten <" dolondaucatt "> :")))

Và thêm dòng lệnh
(if (/= tmp "") (setq dolondaucatt tmp))

Có 2 dòng lệnh của bạn bị thừa (tôi đã cho dấu chấm phẩy ở trước). Sở dĩ thừa do bạn thừa từ hàm Initget (tôi cũng đã sửa lại).

Đoạn mã trở thành:

<<

Filename: 6091_dcl.lsp
Tác giả: ssg
Bài viết gốc: 76348
Tên lệnh: poc
tìm point của spl

Hình như bạn Thiep chưa hiểu đúng ý Duy? Duy tham khảo code sau và hoàn thiện thêm (kiểm tra giá trị user nhập vượt quá phạm vi curve...):

Filename: 76348_poc.lsp
Tác giả: namnhim
Bài viết gốc: 199793
Tên lệnh: ss
Thêm node vào đường Pline
không biết mục đích của bạn có phải tạo thêm các nút trên pline để nắn mềm bình độ không, nếu phải thì mình có đoạn code này có thể giúp bạn được:

====================================
SUA DUONG BINH DO:
====================================
(defun C:SS (/ Thoi chon3 chon Chon1 ChonC Chon1 ZC
S PTD PTC PL PTT DongMucGoc
DongMucCuoi X Y Z XT YT XC
YC Layer I D
...
>>
không biết mục đích của bạn có phải tạo thêm các nút trên pline để nắn mềm bình độ không, nếu phải thì mình có đoạn code này có thể giúp bạn được:

====================================
SUA DUONG BINH DO:
====================================
(defun C:SS (/ Thoi chon3 chon Chon1 ChonC Chon1 ZC
S PTD PTC PL PTT DongMucGoc
DongMucCuoi X Y Z XT YT XC
YC Layer I D
)
(command "_layer" "m" "SUA" "c" "2" "" "")
(command "osmode" 512)
;(print " ! LOAI DUONG DONG MUC PHAI LA POLYLINE MOI SUA DUOC !")
;(print " ! De chuyen sang POLYLINE: dung ARGIC mo file VA EXPORT TO CAD !")
(setq PTD (getpoint "\nCHON DIEM DAU TIEN XUAT PHAT TU BINH DO"))
(command "osmode" 0)
(setq Chon (ssget PTD))
(setq Chon1 (ssname Chon 0))
(setq DongMucGoc (entget Chon1))
(setq Z (last (assoc 10 DongMucGoc)))
(setq PL '())
(setq X (car PTD)
Y (cadr PTD)
PTD (list X Y Z))
(setq PL (append PL (list PTD)))
(setq Layer (cdr (assoc 8 DongMucGoc)))
(setq DongMucGoc
(subst (cons 8 "SUA") (assoc 8 DongMucGoc) DongMucGoc) )
(entmod DongMucGoc)
(setq Thoi 0)
(setq PT1 PTD)
(command "_layer" "m" "PLSUA" "c" "3" "" "")
(while (= Thoi 0)
(if (= (setq PTT
(getpoint
"\nCHON DIEM TIEP THEO!!! bam CHUOT PHAI hoac ENTER truoc khi chon diem cuoi cung !!!")) nil)
(progn (setq Thoi 1)
(command "osmode" 512)) ;end progn
(progn
(setq XT (car PTT)
YT (cadr PTT)
PTT (list XT YT Z))
(command ".pline" PT1 PTT "")
(setq PL (append PL (list PTT)))
(setq PT1 PTT)) ; end progn
) ; end if
) ; end while
(setq PTC (getpoint "\nCHON DIEM CUOI CUNG LOI VAO BINH DO"))
(setq ChonC (ssget PTC))
(setq ChonC1 (ssname ChonC 0))
(setq DongMucCuoi (entget ChonC1))
(setq ZC (last (assoc 10 DongMucCuoi)))
(if (= ZC Z)
(setq X (car PTC)
Y (cadr PTC)
PTC (list X Y ZC))
(progn
(while (/= ZC Z)
(setq PTC
(getpoint
"\nBAN DA CHON KHONG DUNG DOI TUONG BAN DAU !!! HAY CHON LAI DIEM CUOI CUNG !!!"))
(setq ChonC (ssget PTC))
(setq ChonC1 (ssname ChonC 0))
(setq DongMucCuoi (entget ChonC1))
(setq ZC (last (assoc 10 DongMucCuoi)))) ; end while
(setq X (car PTC)
Y (cadr PTC)
PTC (list X Y ZC))
) ;end progn
) ; end if
(setq PL (append PL (list PTC)))
(command ".pline" PT1 PTC "")
(setq DongMucGoc
(subst (cons 8 Layer) (assoc 8 DongMucGoc) DongMucGoc) )
(entmod DongMucGoc)
(command "_layer" "m" Layer "c" "" "" "")
(command "_break" Chon PTD PTC "")
(setq Chon3 (ssget PTD))
(foreach PT PL
(setq C (ssget PT))
(setq i 0)
(while (<= i (- (sslength C) 1))
(setq D (ssname C i))
(if (/= D nil)
(setq Chon3 (ssadd D Chon3))
) ; end if
(setq i (+ i 1))
) ; end while
) ; end for PL
(command "_select" Chon Chon3 "")
(setq S (ssget "P"))
(command "_pedit" "m" S "" "j" "" "")
(command "-osnap" "End,Mid,Int,Perp")
(prompt "\nDA NAN BINH DO XONG!")(PRINC))

<<

Filename: 199793_ss.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 199699
Tên lệnh: ha
- Lisp so sánh sự khác nhau giữa các biến hệ thống của 2 bản vẽ

Bác Thai!
1). Đã (if (getvar var)... rồi thì đâu còn sợ bị lỗi vì dư biến nữa nhỉ? Chỉ sợ thiếu thôi chứ?
2). Cái list_var của tôi lấy từ cad2007 nên nó hoặc thừa hoặc thiếu đối với các đời khác, chán thế!
Tôi làm cái lisp này để lấy list_var, không phụ thuộc đời cad, và đã test trên 2007 thì OK, không biết nó có ổn định không.
Nếu ổn định thì đưa vào lisp của...
>>
Bác Thai!
1). Đã (if (getvar var)... rồi thì đâu còn sợ bị lỗi vì dư biến nữa nhỉ? Chỉ sợ thiếu thôi chứ?
2). Cái list_var của tôi lấy từ cad2007 nên nó hoặc thừa hoặc thiếu đối với các đời khác, chán thế!
Tôi làm cái lisp này để lấy list_var, không phụ thuộc đời cad, và đã test trên 2007 thì OK, không biết nó có ổn định không.
Nếu ổn định thì đưa vào lisp của bác sẽ tiện hơn đấy.

<<

Filename: 199699_ha.lsp
Tác giả: lp_hai
Bài viết gốc: 199877
Tên lệnh: ss
Nhờ viết lisp chọn đối tượng theo cửa sổ tương đồng
Bạn chạy thử xem thế nào:

(defun c:ss(/ dt lstp p01 p02 n id dtc p1 p2 stdc spt)
(setq dt (ssadd))
(setq p01(getpoint "\nchon diem goc 1:"))
(command "ucs" "n" p01)
(while (setq p1(getpoint"\nchon doi tuong:"))
(setq p2(getcorner p1)
lstp (append (list p1 p2) lstp))
)
(setq spt (/(length lstp)2)
n 0)
(repeat spt
(setq dtc (ssget "W"...
>>
Bạn chạy thử xem thế nào:

(defun c:ss(/ dt lstp p01 p02 n id dtc p1 p2 stdc spt)
(setq dt (ssadd))
(setq p01(getpoint "\nchon diem goc 1:"))
(command "ucs" "n" p01)
(while (setq p1(getpoint"\nchon doi tuong:"))
(setq p2(getcorner p1)
lstp (append (list p1 p2) lstp))
)
(setq spt (/(length lstp)2)
n 0)
(repeat spt
(setq dtc (ssget "W" (nth n lstp) (nth (+ n 1) lstp))
n (+ n 2)
)
(setq sdtc (sslength dtc)
id 0)
(repeat sdtc
(setq dt (ssadd (ssname dtc id) dt)
id (1+ id))
)
)
;;;;
(while (setq p02 (getpoint "\nchon diem goc tiep theo:"))
(command "ucs" "n" p02)
(setq n 0)
(repeat spt
(setq dtc (ssget "W" (nth n lstp) (nth (+ n 1) lstp))
n (+ n 2)
)
(setq sdtc (sslength dtc)
id 0)
(repeat sdtc
(setq dt (ssadd (ssname dtc id) dt)
id (1+ id))
)
)
)
(command "ucs" "w")
(sssetfirst dt dt)
)

Ở đây bạn chú ý trình tự chọn điểm gốc: Mình viết chọn điểm gốc đầu tiên ngay từ đầu, kế tiếp là mở cửa sổ chọn dt (khi nào ko chọn dt nữa thì enter), cuối cùng là các điểm gốc tiếp theo (không chọn nữa thì enter)
<<

Filename: 199877_ss.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 200005
Tên lệnh: ha
Lisp thống kê đoạn thẳng

Đây bạn ơi!

Filename: 200005_ha.lsp
Tác giả: htqk9
Bài viết gốc: 200033
Tên lệnh: cd2 cd1 cs2 cs
lisp vẽ cửa sổ-cửa đi
Mình đang dung lisp vẽ cửa đi, cửa sổ: CD1-cửa đi 1 cánh, CD2-cửa đi 2 cánh, CS-cửa sổ 1 lớp, CS2-cửa sổ 2 lớp...(Toàn bộ là khuôn cửa kép)

Giờ Mình muốn nhờ các pro sửa và thêm các loại cửa như:
CD1: cửa đi 1 cánh, khuôn kép
CD2: cửa đi 2 cánh, khuôn kép
CD4: cửa đi 4 cánh, khuôn kép
CD1D: cửa đi 1 cánh, khuôn đơn
CD2D: cửa đi 2 cánh, khuôn đơn
CD4D: cửa...
>>
Mình đang dung lisp vẽ cửa đi, cửa sổ: CD1-cửa đi 1 cánh, CD2-cửa đi 2 cánh, CS-cửa sổ 1 lớp, CS2-cửa sổ 2 lớp...(Toàn bộ là khuôn cửa kép)

Giờ Mình muốn nhờ các pro sửa và thêm các loại cửa như:
CD1: cửa đi 1 cánh, khuôn kép
CD2: cửa đi 2 cánh, khuôn kép
CD4: cửa đi 4 cánh, khuôn kép
CD1D: cửa đi 1 cánh, khuôn đơn
CD2D: cửa đi 2 cánh, khuôn đơn
CD4D: cửa đi 4 cánh, khuôn đơn

CS -đổi tên thành CS21: cửa sổ 1 lớp 2 cánh khuôn kép
CS2-đổi tên thành CS22: cửa sổ 2 lớp 2 cánh khuôn kép
CS41: cửa sổ 1 lớp 4 cánh khuôn kép
CS42: cửa sổ 2 lớp 4 cánh khuôn kép
CS2D: cửa sổ 1 lớp 2 cánh khuôn đơn
CS4D: cửa sổ 1 lớp 4 cánh khuôn đơn

Cụ thể như file đính kèm
http://www.cadviet.c..._socua_di_2.dwg


;;===================== CUA DI HAI CANH ===========================
(defun c:cd2 ()
(setvar "cmdecho" 0)
(setq v (getvar "osmode"))
(prompt "\nVe cua di 2 canh.")
;;(setvar "osmode" 512)
(setq DC (getpoint "\nDiem giua cua tren tuong 1: "))
(setvar "Lastpoint" DC)
(setvar "osmode" 128)
(setq P0 (getpoint "\nDiem vuong goc tren tuong 2: "))
;;(if (null H1)
(setq H1 (getvar "tracewid"));)
(princ "\nChieu rong cua <")
(princ H1)
(princ ">: ")
(setq H1 (getdist))
(if (null H1) (setq H1 (getvar "tracewid")))
(setvar "tracewid" H1)
(progn
(setvar "osmode" 0)
(Setvar "Plinewid" 0)
; (load "attrede")
(setq H (/ H1 2))
(setq B (distance DC P0)
goc1 (angle DC P0)
goc2 (+ goc1 (* 0.5 pi))
goc3 (+ goc2 pi)
goc4 (+ goc1 pi)
P1 (polar DC goc2 H)
P2 (polar DC goc3 H)
P3 (polar P1 goc1 B)
P4 (polar P2 goc1 B)
P5 (polar P1 goc3 50)
P6 (polar P2 goc2 50)
P7 (polar P5 goc1 40)
P8 (polar P6 goc1 40)
P9 (polar P7 goc3 10)
P10 (polar P8 goc2 10)
P11 (polar P3 goc3 60)
P12 (polar P4 goc2 60)
P13 (polar P4 goc4 (+ H B))
)
(setq pt1 (polar P5 goc3 40)
pt2 (polar P6 goc2 40)
pt3 (polar pt1 goc4 (- H 50))
pt4 (polar pt2 goc4 (- H 50))
pt5 (polar pt3 goc2 40)
pt6 (polar pt4 goc3 40))
(setq d1 (polar pt1 goc4 100)
d2 (polar pt2 goc4 100)
d3 (polar d1 goc2 20)
d4 (polar d2 goc3 20)
d5 (polar d1 goc2 40)
d6 (polar d2 goc3 40)
d7 (polar pt3 goc1 100)
d8 (polar pt4 goc1 100)
d9 (polar d7 goc2 20)
d10 (polar d8 goc3 20)
d11 (polar d7 goc2 40)
d12 (polar d8 goc3 40)
)
(command ".break" P1 P2)
(command ".break" P3 P4
".line" P1 P3 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".line" P2 P4 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".pline" P1 P5 P7 P9 P11 P3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P2 P6 P8 P10 P12 P4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P5 pt1 pt3 pt5 "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P6 pt2 pt4 pt6 "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d1 d5 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d7 d11 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d2 d6 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d8 d12 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d3 d9 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d4 d10 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".arc" DC (polar pt2 (+ goc2 (* 0.25 pi)) (distance pt2 DC)) pt4
".Chprop" "L" "" "La" "cua" "" C Bylayer
".arc" DC (polar pt1 (+ goc2 (* 0.75 pi)) (distance pt1 DC)) pt3
".Chprop" "L" "" "La" "cua" "" C Bylayer
".select" "W" P3 P13 ""
".copybase" DC "P" ""
".pasteblock" DC
".Erase" "P" ""
)
(setvar "osmode" v)
)
(prompt "\nDA VE XONG")
(princ)
)
;;================== VE CUA DI MOT CANH ==================
;;
(defun C:cd1 ()
(setvar "cmdecho" 0)
(setq v (getvar "osmode"))
(prompt "\nVe cua di 1 canh.")
;(setvar "osmode" 32)
(setq PX (getpoint "\nChon goc tuong: "))
(setvar "osmode" 512)
(setq P1 (getpoint PX "\nChon mep tuong 1: "))
(setvar "Lastpoint" P1)
(setvar "osmode" 128)
(setq P2 (getpoint P1 "\nDiem vuong goc tuong 2: "))
;(if (null KC)
(setq KC (getvar "tracewid"))
(princ "\nChieu rong cua <")
(princ KC)
(princ ">: ")
(setq KC (getdist))
(if (null KC) (setq KC (getvar "tracewid")))
(setvar "tracewid" KC)
(setvar "osmode" 0) (Setvar "Plinewid" 0)
; (load "attrede")
(setq ANG1 (angle PX P1))
(setq ANG2 (angle P2 P1)
ANG3 (angle P1 P2)
ANG4 (angle P1 PX)
P3 (polar P1 ANG1 KC)
P4 (polar P2 ANG1 KC)
pt1 (polar P1 ANG1 50)
pt2 (polar pt1 ANG3 40)
pt3 (polar pt2 ANG1 10)
pt4 (polar P2 ANG1 60)
P5 (polar pt1 ANG2 (- KC 100))
P6 (polar P5 ANG1 40)
P7 (polar pt1 ANG1 40)
P8 (polar P3 ANG2 200)
P22 (polar P3 ANG2 (- KC 100))
ANG5 (angle P7 P8)
)
(setq d1 (polar pt1 ANG2 100)
d2 (polar d1 ANG1 20)
d3 (polar d1 ANG1 40)
d4 (polar P5 ANG3 100)
d5 (polar d4 ANG1 20)
d6 (polar d4 ANG1 40)
)
(setq dc1 (polar P3 ANG4 50)
dc2 (polar dc1 ANG3 40)
dc3 (polar dc2 ANG4 10)
dc4 (polar P4 ANG4 60)
)
(command ".break" P1 P3
".break" P2 P4
".line" P1 P2 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".line" P3 P4 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".pline" P1 pt1 pt2 pt3 pt4 P2 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P3 dc1 dc2 dc3 dc4 P4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" pt1 P5 P6 P7 "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d1 d3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d4 d6 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d2 d5 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".arc" dc1 (polar P7 ANG5 (- KC 140)) P6
".Chprop" "L" "" "La" "cua" "" C Bylayer
".select" "W" P2 P22 ""
".copybase" P2 "P" ""
".pasteblock" P2
".Erase" "P" ""
)
(setvar "osmode" v)
(prompt "\nDA VE XONG")
(print))
************************************************************************************************
;;===================== CUA SO HAI CANH HAI LOP ===========================
(defun c:cs2 ()
(setvar "cmdecho" 0)
(setq v (getvar "osmode"))
(prompt "\nChuong trinh ve cua so hai canh hai lop.")
(setq DC (getpoint "\nDiem giua cua: "))
(setvar "Lastpoint" DC)
(setvar "osmode" 128)
(setq P0 (getpoint "\nDiem vuong goc tuong con lai: "))
(setq H1 (getvar "tracewid"))
(princ "\nChieu rong cua <")
(princ H1)
(princ ">: ")
(setq H1 (getdist))
(if (null H1) (setq H1 (getvar "tracewid")))
(setvar "tracewid" H1)
(progn
(setvar "osmode" 0) (Setvar "Plinewid" 0)
;(load "attrede")
(setq H (/ H1 2))
(setq B (distance DC P0)
goc1 (angle DC P0)
goc2 (+ goc1 (* 0.5 pi))
goc3 (+ goc2 pi)
goc4 (+ goc1 pi)
P1 (polar DC goc2 H)
P2 (polar DC goc3 H)
P3 (polar P1 goc1 B)
P4 (polar P2 goc1 B)
P5 (polar P1 goc3 50)
P6 (polar P2 goc2 50)
P7 (polar P5 goc1 40)
P8 (polar P6 goc1 40)
P9 (polar P7 goc3 10)
P10 (polar P8 goc2 10)
P11 (polar P3 goc3 50)
P12 (polar P4 goc2 50)
P13 (polar P11 goc4 40)
P14 (polar P12 goc4 40)
P15 (polar P13 goc3 10)
P16 (polar P14 goc2 10)
)
(setq d1 (polar p5 goc3 80)
d2 (polar p6 goc2 80)
d3 (polar p7 goc3 80)
d4 (polar p8 goc2 80)
d5 (polar DC goc1 40)
d6 (polar DC goc3 80)
d7 (polar DC goc2 80)
d8 (polar d5 goc3 80)
d9 (polar d5 goc2 80)
l1 (polar d1 goc1 20)
l2 (polar d2 goc1 20)
l3 (polar d7 goc1 20)
l4 (polar d6 goc1 20)
)
(setq c1 (polar p11 goc3 80)
c2 (polar p12 goc2 80)
c3 (polar p13 goc3 80)
c4 (polar p14 goc2 80)
cc (polar p0 goc4 40)
c5 (polar p0 goc2 80)
c6 (polar p0 goc3 80)
c7 (polar cc goc2 80)
c8 (polar cc goc3 80)
)
(command ".break" P1 P2)
(command ".break" P3 P4
".line" P1 P3 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".line" P2 P4 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".pline" P1 P5 P7 P9 P15 P13 P11 P3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P2 P6 P8 P10 P16 P14 P12 P4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P5 P7 d5 DC "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P6 P8 d5 DC "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d1 d3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d7 d9 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d2 d4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d8 d6 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" l1 l3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" l2 l4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P11 P13 cc p0 "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P12 P14 cc p0 "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" c1 c3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" c7 c5 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" c2 c4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" c6 c8 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".select" "W" P1 P4 ""
".copybase" P1 "P" ""
".pasteblock" P1
".Erase" "P" ""
)
)
(setvar "osmode" v)
(prompt "\nda ve xong.")
(princ)
)
;;===================== CUA SO HAI CANH ===========================
(defun c:cs ()
(setvar "cmdecho" 0)
(setq v (getvar "osmode"))
(prompt "\nChuong trinh ve cua so hai canh.")
(setq DC (getpoint "\nDiem giua cua so: "))
(setvar "Lastpoint" DC)
(setvar "osmode" 128)
(setq P0 (getpoint "\nDiem vuong goc tuong con lai: "))
(setq H1 (getvar "tracewid"))
(princ "\nChieu rong cua <")
(princ H1)
(princ ">: ")
(setq H1 (getdist))
(if (null H1) (setq H1 (getvar "tracewid")))
(setvar "tracewid" H1)
(progn
(setvar "osmode" 0) (Setvar "Plinewid" 0)
;(load "attrede")
(setq H (/ H1 2))
(setq B (distance DC P0)
goc1 (angle DC P0)
goc2 (+ goc1 (* 0.5 pi))
goc3 (+ goc2 pi)
goc4 (+ goc1 pi)
P1 (polar DC goc2 H)
P2 (polar DC goc3 H)
P3 (polar P1 goc1 B)
P4 (polar P2 goc1 B)
P5 (polar P1 goc3 50)
P6 (polar P2 goc2 50)
P7 (polar P5 goc1 40)
P8 (polar P6 goc1 40)
P9 (polar P7 goc3 10)
P10 (polar P8 goc2 10)
P11 (polar P3 goc3 60)
P12 (polar P4 goc2 60)
)
(setq d1 (polar p5 goc3 80)
d2 (polar p6 goc2 80)
d3 (polar p7 goc3 80)
d4 (polar p8 goc2 80)
d5 (polar DC goc1 40)
d6 (polar DC goc3 80)
d7 (polar DC goc2 80)
d8 (polar d5 goc3 80)
d9 (polar d5 goc2 80)
l1 (polar d1 goc1 20)
l2 (polar d2 goc1 20)
l3 (polar d7 goc1 20)
l4 (polar d6 goc1 20)
)
(command ".break" P1 P2)
(command ".break" P3 P4
".line" P1 P3 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".line" P2 P4 ""
".Chprop" "L" "" "La" "cat" "" C Bylayer
".pline" P1 P5 P7 P9 P11 P3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P2 P6 P8 P10 P12 P4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P5 P7 d5 DC "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".pline" P6 P8 d5 DC "c"
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d1 d3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d7 d9 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d2 d4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" d8 d6 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" l1 l3 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" l2 l4 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".line" P11 P12 ""
".Chprop" "L" "" "La" "cua" "" C Bylayer
".select" "W" P1 P4 ""
".copybase" P1 "P" ""
".pasteblock" P1
".Erase" "P" ""
)
(setvar "osmode" v)
)
(prompt "\nda ve xong.")
(princ)
)

<<

Filename: 200033_cd2_cd1_cs2_cs.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 200211
Tên lệnh: ha
Tác giả: phamthanhbinh
Bài viết gốc: 200321
Tên lệnh: gdd
"[Yêu cầu] Nhờ viết Lisp ghi chiều dài - độ dốc, hướng dốc


Hề hề hề,
Bạn dùng thử cái này rồi cho ý kiến nhé. Với line và arc thì chắc là ổn, riêng với pline có thể bạn chưa thật ứng ý vì điểm đặt mũi tên và text.
Về hướng mũi tên chỉ độ dốc do bạn không nói rõ điểm thứ nhất và điểm thứ hai được chọn ra sao nên mình chơi phương án cho bạn tự chọn vậy. Khi bạn thấy chiều mũi tên chưa đúng khi lisp hỏi bạn chỉ cần...
>>

Hề hề hề,
Bạn dùng thử cái này rồi cho ý kiến nhé. Với line và arc thì chắc là ổn, riêng với pline có thể bạn chưa thật ứng ý vì điểm đặt mũi tên và text.
Về hướng mũi tên chỉ độ dốc do bạn không nói rõ điểm thứ nhất và điểm thứ hai được chọn ra sao nên mình chơi phương án cho bạn tự chọn vậy. Khi bạn thấy chiều mũi tên chưa đúng khi lisp hỏi bạn chỉ cần nhập y hay Y là nó sẽ đổi chiều theo ý bạn.

Đây chỉ là lisp thử chưa hoàn chỉnh, bạn cứ việc cho biết những điều cần hoàn thiện, mình sẽ hoàn thiện lại sau nhé.
Chúc bạn vui.
<<

Filename: 200321_gdd.lsp
Tác giả: Snowman
Bài viết gốc: 30805
Tên lệnh: av
Viết Lisp theo yêu cầu

Bạn dùng đoạn code sau, lệnh AV, yêu cầu chọn nhiều text và cuối cùng chọn 1 text để ghi kết quả

Filename: 30805_av.lsp
Tác giả: ketxu
Bài viết gốc: 200446
Tên lệnh: p2s
Lisp vẽ một SPL trên một PL cho trước
Rất cần thì phải quick and dirty code thôi ^^
Của bạn đây, chọn hàng loạt Pline để chuyển thành SPline, giữ nguyên các thuộc tính Layer, Color,Linetype, LinetypeScale. Lisp có dùng hàm MakeSpline của bác Thái, 2 hàm của bộ Express


(defun c:p2s(/ ss lstPro MakeSPline)
(command "undo" "be")
(prompt "\nChon Pline(s) :")
(cond ((setq ss (ssget (list (cons 0...
>>
Rất cần thì phải quick and dirty code thôi ^^
Của bạn đây, chọn hàng loạt Pline để chuyển thành SPline, giữ nguyên các thuộc tính Layer, Color,Linetype, LinetypeScale. Lisp có dùng hàm MakeSpline của bác Thái, 2 hàm của bộ Express


(defun c:p2s(/ ss lstPro MakeSPline)
(command "undo" "be")
(prompt "\nChon Pline(s) :")
(cond ((setq ss (ssget (list (cons 0 "*POLYLINE"))))
(vl-load-com)
(setq ss (acet-ss-to-list ss)
lstPro '(Linetype LinetypeScale Layer Color))
(defun MakeSPline (listpoint Linetype LTScale Layer Color / Lst)
(setq lst (list '(0 . "SPLINE")'(100 . "AcDbEntity")
(cons 8 (if Layer Layer (getvar "Clayer")))
(cons 6 (if Linetype Linetype "bylayer"))
(cons 48 (if LTScale LTScale 1))
(cons 62 (if Color Color 256))
'(100 . "AcDbSpline")
(cons 71 3)
(cons 74 (length listpoint))))
(foreach PP listpoint (setq Lst (append Lst (list (cons 11 PP)))))
(entmakex Lst)
);end
(mapcar
'(lambda(x)
(apply
'MakeSPline
(append
(list (acet-geom-vertex-list x))
(mapcar '(lambda(a)(vlax-get (vlax-ename->vla-object x) a)) lstPro)
)
)
(entdel x)
)
ss
)
))
(command "undo" "en")
)

<<

Filename: 200446_p2s.lsp
Tác giả: ketxu
Bài viết gốc: 200480
Tên lệnh: p2s
Lisp vẽ một SPL trên một PL cho trước
Nếu muốn làm mịn đi thì loại bỏ các điểm ở giữa, bạn sử dụng thằng này. Độ làm mịn càng lớn thì số đỉnh của Pline bị loại bỏ càng lớn. Ở máy của mình lấy ví dụ tầm 30 là đẹp :) Lần sau chịu khó trình bày kỹ hơn chút nữa hén, do mình hơi dốt nên dễ hiểu nhầm

(defun c:p2s(/...
>>
Nếu muốn làm mịn đi thì loại bỏ các điểm ở giữa, bạn sử dụng thằng này. Độ làm mịn càng lớn thì số đỉnh của Pline bị loại bỏ càng lớn. Ở máy của mình lấy ví dụ tầm 30 là đẹp :) Lần sau chịu khó trình bày kỹ hơn chút nữa hén, do mình hơi dốt nên dễ hiểu nhầm

(defun c:p2s(/ ss lstPro MakeSPline ST:Geom-Vertext-List lstPro)
(command "undo" "be")
(setq a (getint "\nDo lam min :"))
(prompt "\nChon Pline(s) :")
(cond ( (ssget (list (cons 0 "*POLYLINE")))
(vl-load-com)
(setq lstPro '(Linetype LinetypeScale Layer Color))
(defun lstRe (lst n / rt sublst);(1 2 3 4)
(defun sublst(lst it)(repeat (1- it) (setq lst (cdr lst))))
(while lst
(setq rt (cons (car lst) rt) lst (sublst lst n))
) (reverse (vl-remove nil rt))
)
(defun MakeSPline (listpoint Linetype LTScale Layer Color / Lst)
(setq lst (list '(0 . "SPLINE")'(100 . "AcDbEntity")
(cons 8 (if Layer Layer (getvar "Clayer")))
(cons 6 (if Linetype Linetype "bylayer"))
(cons 48 (if LTScale LTScale 1))
(cons 62 (if Color Color 256))
'(100 . "AcDbSpline")
(cons 71 3)
(cons 74 (length listpoint))))
(foreach PP listpoint (setq Lst (append Lst (list (cons 11 PP)))))
(entmakex Lst)
);end
(defun ST:Geom-Vertext-List (e / typ poly) ;vlaObject
(setq typ (vlax-get e 'ObjectName))
(cond ((wcmatch typ "AcDbLine")(list (vlax-get e 'StartPoint)(vlax-get e 'EndPoint)))
(T
( (lambda ( f /)
(if (setq poly (vl-position typ '("AcDbPolyline" "AcDb2dPolyline" "AcDb3dPolyline")))
(f (vlax-get e 'coordinates))
)
)
(lambda ( l )
(cond
((and l (= poly 0)) (cons (list (car l) (cadr l)) (f (cddr l))))
((and l (= poly 1)) (cons (list (car l) (cadr l)) (f (cdddr l))))
((and l (= poly 2)) (cons (list (car l) (cadr l) (caddr l)) (f (cdddr l))))
)
)
)
)
)
)
(vlax-for x (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
(apply
'MakeSPline
(append
(list (lstRe (ST:Geom-Vertext-List x) a))
(mapcar '(lambda(a)(vlax-get x a)) lstPro)
)
)
(vla-erase x)
)
)
)
(command "undo" "en")
)

<<

Filename: 200480_p2s.lsp

Trang 90/330

90