Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Nguyen Hoanh

Viết lisp theo yêu cầu [phần 2]

Các bài được khuyến nghị

hochoaivandot    108
Lệnh Pe (pedit) làm được việc này (nếu mình nhớ không nhầm)

không thì dùng lệnh reverse - lệnh này đảo chiều cả pline và spline

Cảm ơn Thaistreetz đã hồi âm.

Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)

Còn Pedit thì chắc bạn nhớ nhầm thật.

Xem lại dùm mình với. Cảm ơn 1 lần nữa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Cảm ơn Thaistreetz đã hồi âm.

Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)

Còn Pedit thì chắc bạn nhớ nhầm thật.

Xem lại dùm mình với. Cảm ơn 1 lần nữa.

Có lẽ CAD phiên bản mới thì lệnh Pedit mới có chức năng này:

 

Command: _pedit

Enter an option [Close/Join/Width/Edit vertex/Fit/Spline/Decurve/Ltype

gen/Reverse/Undo]:

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
dkkx3a    58

Có lẽ CAD phiên bản mới thì lệnh Pedit mới có chức năng này:

 

Từ Cad2010 trở lên mới có, cái bạn cài cad mới có nhiều cái tiện hơn, Dùng lâu quay xuống cad cũ cứ qờ qờ... :undecided:

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thaistreetz    515
Cảm ơn Thaistreetz đã hồi âm.

Lệnh reverse thì Cad 2007 báo Unknown command "REVERSE". Press F1 for help. (Có lẽ nhầm chính tả tên lệnh)

Còn Pedit thì chắc bạn nhớ nhầm thật.

Xem lại dùm mình với. Cảm ơn 1 lần nữa.

à, mình dùng cad2010, vừa test xong, cả 2 đều đúng. chắc lệnh này mới đuợc đưa vào.

nếu không thì bạn dùng thằng này. Pline, spline rồi line, arc, circle, ellipse, text, hatch hay cả gradient fill nó xơi tất

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Chào bác Tú,lisp này bác có thể thêm dòng chọn đường tròn hay đường xiên không?Đường xiên nghêng 1 góc 45 độ và dài 200.Thanks.

Của bạn đây:

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
 (setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "T G")
(setq w (getkword "\nBan muon dung: [hinh Tron/Gach cheo]: "))
(if (= (strcase w) "T") 
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" PTD "w" 0 0 ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(command "pline" pg1 "w" 20 20 pg2 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
790312    4
Của bạn đây:

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
 (setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "T G")
(setq w (getkword "\nBan muon dung: [hinh Tron/Gach cheo]: "))
(if (= (strcase w) "T") 
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
(progn
(COMMAND "COLOR" "150" "")
(COMMAND "PLINE" PTD "w" 0 0 ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(command "pline" pg1 "w" 20 20 pg2 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

Chân thành cảm ơn bạn nhưng lisp vẫn còn lỗi,nếu đầu tiên mình vẽ chọn hình tròn,xong mình vẽ tiếp chọn đường xéo thì ok nhưng tiếp vẽ nữa chọ đường tròn thì đoạn polyline sẽ có độ dày 20.Mong bạn kiểm tra lại giùm mình tiện thể bạn thêm giùm mình 1 lựac chọn nửa là TRỐNG nếu lựa chọn này thì ngay đầu polyline sẽ không có chấm tròn và đưòng xéo.Lúc này sẽ có 3 lựa chọn TRỐNG,ĐƯỜNG TRÒN,ĐƯỜNG XÉO.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Chân thành cảm ơn bạn nhưng lisp vẫn còn lỗi,nếu đầu tiên mình vẽ chọn hình tròn,xong mình vẽ tiếp chọn đường xéo thì ok nhưng tiếp vẽ nữa chọ đường tròn thì đoạn polyline sẽ có độ dày 20.Mong bạn kiểm tra lại giùm mình tiện thể bạn thêm giùm mình 1 lựac chọn nửa là TRỐNG nếu lựa chọn này thì ngay đầu polyline sẽ không có chấm tròn và đưòng xéo.Lúc này sẽ có 3 lựa chọn TRỐNG,ĐƯỜNG TRÒN,ĐƯỜNG XÉO.

Mình sửa và bổ xung cho bạn rồi này. Chúc bạn như ý.

;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "TR T C")
(setq w (getkword "\nBan muon dung: [TRong/duong Tron/duong Cheo]: "))
(if (= (strcase w) "T") 
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
)
(if (= (strcase w) "C")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(setvar "plinewid" 20)
(command "pline" pg1 pg2 "")
)
)
(if (= (strcase w) "TR")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Nhờ anh chỉ giúp lssp trên, nếu tăng khỏng cách cắt thửa đến 5 đơn vị ra ngòi biên thì mình cần chỉnh đoạn lệnh nào ?

Mong được anh giúp.

Nếu bạn muốn nhập khoảng cách bằng tay thì có thể thay dòng

(setq of (/ (sqrt (getvar "area")) 6))

bằng các dòng sau:

(setq of (cond (of) (10)))

(setq oldof of)

(setq of (getreal (strcat "\nNhap khoang cack muon cat: <" (rtos oldof 2 2) ">: ")))

(if (null of) (setq of oldof))

giá trị mặc định ban đầu là 10 sau khi bạn nhập giá trị vào sẽ tự lưu giá trị cho lần nhập sau.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

nhờ anh chị viết dùm em lisp tự động sắp xếp bình đồ và trắc dọc vào viewport bên layout

 

em đang làm ở công ty KSTK em rất cần lisp tự động sắp xếp bình đồ và trắc dọc vào viewport,

mong các anh chị làm ơn viết dùm em:

cụ thể như thế này ạ! em có một trắc dọc dài 2km, em muốn chia nó thành 8 đoạn để ép vào khung của cơ quan. nếu tự cắt bằng tay trong viewport thì sẽ mất rất nhiều thời gian.

nên em xin cái lisp tự động bố trí kiểu như lisp tự động bố trí trắc ngang vào viewport của anh đoàn duy hùng ấy ạh!

em xin chân thành cảm ơn!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
lacvanhoa    0
Kính chào bác gia bạch, và các anh trên diễn đàn, em dùng ứng dụng Autocad.net API.dll trích xuất text trong bản vã sang exel, khi xuất text qua exel thì tất cả các text đều nằm cùng 1 cột, bác Gia Bạch và các anh trên diễn đàn có cách nào xuất text qua exel mà text thuộc layer sothua nằm 1 cột, text Loaidat nằm 1 cột, text dt-GCN nằm 1 cột nhưng 3 text sothua, Loaidat, dt-GCN cùng 1 thửa khi qua exel thì nằm cùng 1 hàng. file cad em làm vd để xuất text http://www.cadviet.com/upfiles/3/xuattext_1.dwg, file exel em đạc được và kết quả cuối cùng http://www.cadviet.com/upfiles/3/text_1.rar, đây là ứng dụng Autocad.net APi.dll em dùng để xuất text http://www.cadviet.com/upfiles/3/megashare...tetoexcel_3.zip

Sao không ai trả lời dùm mình hết, buồn wá!

Các bác cho em hỏi sao file cad em nó bị lỗi như thế này là lỗi gì vậy, làm sao khắc phục được http://www.cadviet.com/upfiles/3/to31.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Sao không ai trả lời dùm mình hết, buồn wá!

Các bác cho em hỏi sao file cad em nó bị lỗi như thế này là lỗi gì vậy, làm sao khắc phục được http://www.cadviet.com/upfiles/3/to31.dwg

Chào bạn lacvanhoa,

1/- Cách đặt vấn đề của bạn rất khó hiểu, không hiểu nổi bạn cần cái gì nữa.

Bạn muốn có một chương trình giống như thằng gì gì . net của bạn ư????

Bạn muốn sửa chữa hay khắc phục lỗi của chương trình đó????

 

2/- Bạn nhớ cho là không phải mọi người đều hiểu công việc của bạn, bạn trình bày kiểu đó thì may ra chỉ có những người cùng làm công việc như bạn, cùng sử dụng cái phần mềm chi chi đó của bạn và cũng đã gặp cùng cái lỗi như bạn mới hiểu được bạn ạ.

Cái phần mềm bạn post lên đã được mã hóa rồi, chỉ có người viết ra nó mới có thể biết đường mà mò, còn cánh nghiệp dư thì chỉ xem cho vui mắt chứ chả thể chọc ngoáy gì vào đó đâu..

Do vậy phương án tối ứu là bạn hãy thỉnh cầu ngay cái người cung cấp cho bạn cái phần mềm đó.

Còn nếu bạn muốn viết một cái khác thì phải trình bày cụ thể và tỉ mỉ hơn cái bạn cần, Nếu không thì dủ bạn có kêu la rát cổ cũng khó có thể giúp được bạn.

 

3/- File Cad bạn gửi chả bị lỗi gì cả, khi bạn zoom lớn thì cái đường biên nó bị che khuất một phần nên chả tạo được boundary. Chỉ có vậy thôi, Tại sao thì mình không giải thích được, bạn phải gọi thằng CAD mà hỏi. Hề hề hề....

Chúc bạn vui...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
790312    4
Mình sửa và bổ xung cho bạn rồi này. Chúc bạn như ý.

;; free lisp from cadviet.com

(DEFUN C:gct ()
(SETQ DK1 (GETVAR "USERR3"))
(IF (= DK1 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 1)
    )    
    (SETQ STR (RTOS DK1))
)
(SETQ PRPT (STRCAT "\nSize <" STR ">:"))
(SETQ DK1 (GETREAL PRPT))
(IF (= DK1 NIL)
    (SETQ DK1 (GETVAR "USERR3"))
    (SETVAR "USERR3" DK1)
)
(setq dk (* DK1 50))
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(setq v (rtos dk))
(setq t (distance ptd ptc))
(setq r (/ t 2))
(SETQ PT1 (POLAR  PTc  0   (* 33 DK)))
(SETQ o (POLAR  PT1  0   (* 5.2 DK)))
(setq h (substr v 1 1))
(setq y (substr v 2 3))
(setq l (distance ptc pt1))
(setq pt3 (polar ptc 0 (/ l 1.85)))
(setq pt4 (polar pt3 (/ pi 2) (* 4 DK)))
(setq pt5 (polar ptd (- gocx (/ pi 2)) r))
(setq pt6 (polar ptd (+ gocx (/ pi 2)) r))
(setq pt7 (polar ptd (+ gocx  pi) r))
(setq pt8 (polar ptd  gocx   100))
(command "osnap"  "")
(command "layer" "m" "ghichu" "c" "163" """")
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "T_THEP"  "romans.shx,vn1.shx" "" "" "" "" "" "" )
(command "text" "j" "m" pt4 (* 5 DK) 0)
(command "%%c10a150" )
(setq sua (entlast))
(if (= (tblsearch "block" "ghithep_t") nil)
(progn
(COMMAND "STYLE" "VnAvant"  ".VnAvant" "" "" "" "" "")
(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)
(setq ss (ssadd))
(setq ss (ssadd (entlast) ss))
(COMMAND "COLOR" "4" "")
(command "circle" o (* 5.2 50)"")
(setq ss (ssadd (entlast) ss))
(command "block" "ghithep_t" o ss "")
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(command "insert" "ghithep_t" o DK1 DK1 "" "1")
)
(initget 1 "TR T C")
(setq w (getkword "\nBan muon dung: [TRong/duong Tron/duong Cheo]: "))
(if (= (strcase w) "T") 
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" pt8 ptc pt1 "")
(command "circle" ptd 100 "")
)
)
(if (= (strcase w) "C")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
(setq pg1 (polar PTD (- pi (/ pi 4)) 100))
(setq pg2 (polar PTD (- (* pi 2) (/ pi 4)) 100))
(setvar "plinewid" 20)
(command "pline" pg1 pg2 "")
)
)
(if (= (strcase w) "TR")
(progn
(COMMAND "COLOR" "150" "")
(setvar "plinewid" 0)
(COMMAND "PLINE" PTD ptc pt1 "")
)
)
(COMMAND "COLOR" "BYLAYER" "")
(command "osnap" "End,Mid,Cen,Quad,Int,Perp,Tan,Near,App,Int,Ext,Par"  )
(command "ddedit" sua pause)
)

Bác cho e hỏi nếu 1 bản vẽ chưa có block GHITHEP_T thì lisp thực hiện rất tốt nhưng nếu trong bản vẽ có block GHITHEP_T rồi thì khi vẽ block GHITHEP_T sẽ

không nằm đúng vị trí cuối của đường polyline.Mong bác xem lại giúp.Thanks.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Bác cho e hỏi nếu 1 bản vẽ chưa có block GHITHEP_T thì lisp thực hiện rất tốt nhưng nếu trong bản vẽ có block GHITHEP_T rồi thì khi vẽ block GHITHEP_T sẽ

không nằm đúng vị trí cuối của đường polyline.Mong bác xem lại giúp.Thanks.

Hề hề hề, cái này có nhẽ là do cái block có sẵn của bạn có điểm gốc insert không đúng như cái block của bác ấy tạo ra. Bạn chỉ cần xem kỹ cái block ấy và hiệu chỉnh lại cái điểm chèn trong líp là OK mà.

Hề hề hề.

Việc chỉnh lísp cho bạn không khó, nhưng không biết bạn có bao nhiêu cái block sẵn có ấy mà hiệu chỉnh cho vừa bạn ạ. Được với anh cu này ắt lại chệch với anh cu khác, chúng nó kiện nhau thì bỏ u. Cách tốt nhất là bạn hãy chịu khó tìm hiểu một chút về cái lisp của bác ấy để có thể tùy chỉnh theo ý bạn là tốt nhất. Chấp luôn cả mấy anh bạn trái khoáy như vầy.

Hề hề hề....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
790312    4
Hề hề hề, cái này có nhẽ là do cái block có sẵn của bạn có điểm gốc insert không đúng như cái block của bác ấy tạo ra. Bạn chỉ cần xem kỹ cái block ấy và hiệu chỉnh lại cái điểm chèn trong líp là OK mà.

Hề hề hề.

Việc chỉnh lísp cho bạn không khó, nhưng không biết bạn có bao nhiêu cái block sẵn có ấy mà hiệu chỉnh cho vừa bạn ạ. Được với anh cu này ắt lại chệch với anh cu khác, chúng nó kiện nhau thì bỏ u. Cách tốt nhất là bạn hãy chịu khó tìm hiểu một chút về cái lisp của bác ấy để có thể tùy chỉnh theo ý bạn là tốt nhất. Chấp luôn cả mấy anh bạn trái khoáy như vầy.

Hề hề hề....

Bác có thể chỉ cho e biết 2 block này khác nhau điểm nào với.Nếu được bác sửa giùm e đoạn lisp cho nó trùng với block có sẵn giùm e.E chân thành cảm ơn trước.

http://www.cadviet.com/upfiles/3/drawing1_37.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Bác có thể chỉ cho e biết 2 block này khác nhau điểm nào với.Nếu được bác sửa giùm e đoạn lisp cho nó trùng với block có sẵn giùm e.E chân thành cảm ơn trước.

http://www.cadviet.com/upfiles/3/drawing1_37.dwg

Hề hề hề,

Bạn này lại chơi khó nhau đây.....

1/- Bản vẽ bạn gửi chỉ có một block duy nhất là block tt. Nếu không nhầm thì điểm chèn của nó trùng với điểm đặt của cái text thuộc tính trong đó.

2/- Cái block thứ hai ở đâu chả biết nên thua luôn. Có nhẽ điểm đặt của nó ở bên Mỹ chăng. Hề hề hề.

3/- Cái block mà bác phamngoctukts tạo ra trong lisp có điểm chèn là điểm o cũng là điểm đặt của text thuộc tính nhưng bác ấy dùng căn text là Justify và Middle.

Điều này có nhẽ khác với cái text trong block của bạn chọn căn lề là bottom left chăng.

Bạn hãy xem lại nhé.....

Hề hề hề,....

 

Bạn muốn sửa lisp thì bạn phải post cái bản vẽ chứa block bạn có và cái kết quả bạn cần mới được, chứ nói suông vậy biết đâu mà mò. Hề hề hề.....

 

Bạn thử kiểm tra lại, hình như trong cái lisp của bác Phamngoctukts dòng code :

(command "attdef" "" 1 1 1 "j" "m" o (* 5 50) 0)

có dư một chữ số 1 thì phải.

Do đó có thể cái attribute tạo ra không đúng với ý muốn của bác ấy. Hề hề hề.....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Bác có thể chỉ cho e biết 2 block này khác nhau điểm nào với.Nếu được bác sửa giùm e đoạn lisp cho nó trùng với block có sẵn giùm e.E chân thành cảm ơn trước.

http://www.cadviet.com/upfiles/3/drawing1_37.dwg

Bạn sử dụng lệnh bedit -> move đường tròn và chữ từ tâm của nó về 0,0,0 là được

Sau đó dùng lệnh Attsync để đồng bộ Block thuộc tính

Đây cũng chính là sự khác nhau giữa 2 Block này.

Nó khác nhau về cách định nghĩa điểm chèn mà thôi

 

Nếu bạn làm chưa được-> hãy post lên đây, Tue_NV sẽ giúp bạn.

Chúc thành công :undecided:

 

Hề hề hề,

Bạn này lại chơi khó nhau đây.....

1/- Bản vẽ bạn gửi chỉ có một block duy nhất là block tt. Nếu không nhầm thì điểm chèn của nó trùng với điểm đặt của cái text thuộc tính trong đó.

2/- Cái block thứ hai ở đâu chả biết nên thua luôn. Có nhẽ điểm đặt của nó ở bên Mỹ chăng. Hề hề hề.

Bản vẽ của bạn ấy có 2 Block : 1Block TT và 1 Block tên là ghithep_t

điểm chèn của Block Ghithep_t nằm ở tâm đường tròn thì sẽ chạy đúng bác ạ. Và nếu điểm chèn của block tt cũng nằm ở tâm đường tròn thì nó cũng sẽ không chạy sai. Đơn giản là vậy bác ạ

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Bạn sử dụng lệnh bedit -> move đường tròn và chữ từ tâm của nó về 0,0,0 là được

Sau đó dùng lệnh Attsync để đồng bộ Block thuộc tính

Đây cũng chính là sự khác nhau giữa 2 Block này.

Nó khác nhau về cách định nghĩa điểm chèn mà thôi

 

Nếu bạn làm chưa được-> hãy post lên đây, Tue_NV sẽ giúp bạn.

Chúc thành công :undecided:

Bản vẽ của bạn ấy có 2 Block : 1Block TT và 1 Block tên là ghithep_t

điểm chèn của Block Ghithep_t nằm ở tâm đường tròn thì sẽ chạy đúng bác ạ. Và nếu điểm chèn của block tt cũng nằm ở tâm đường tròn thì nó cũng sẽ không chạy sai. Đơn giản là vậy bác ạ

Ối bác Tue_NV ơi,

Sao bản vẽ bạn ấy post lên, mình mở ra chỉ có trần sì hai cái bock. Mình dùng (entget (car (entsel))) cả hai thằng đều cho ra cái tên là tt cả. Mình vào insert để hiện ra cái bảng chọn tên block cũng chỉ thấy nhõn cái thằng block tt. Vậy chứ cái thằng block Ghithep_t ấy nó trốn chỗ mô hử bác????

Mình tìm chả thấy mới tưởng là bạn ấy nhầm nên post bài tếu tếu vậy để bạn ấy kiểm tra mừ bác.

Mình cũng đoán là nguyên nhân ở cái điểm chèn, song còn nó lệch ra răng thì phải thấy mới biết mà có biết mới mần tiếp được bác ạ. Thế nên mới phải hỏi lại cho rõ mà bác.

Hề hề hề

@ Bạn 790312: Rất xin lỗi bạn nếu mình nhầm. Hề hề hề...

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Ối bác Tue_NV ơi,

Sao bản vẽ bạn ấy post lên, mình mở ra chỉ có trần sì hai cái bock. Mình dùng (entget (car (entsel))) cả hai thằng đều cho ra cái tên là tt cả. Mình vào insert để hiện ra cái bảng chọn tên block cũng chỉ thấy nhõn cái thằng block tt. Vậy chứ cái thằng block Ghithep_t ấy nó trốn chỗ mô hử bác????

Mình tìm chả thấy mới tưởng là bạn ấy nhầm nên post bài tếu tếu vậy để bạn ấy kiểm tra mừ bác.

Mình cũng đoán là nguyên nhân ở cái điểm chèn, song còn nó lệch ra răng thì phải thấy mới biết mà có biết mới mần tiếp được bác ạ. Thế nên mới phải hỏi lại cho rõ mà bác.

Hề hề hề

@ Bạn 790312: Rất xin lỗi bạn nếu mình nhầm. Hề hề hề...

Hề hề chào Bác Bình!

Mấy hôm nây bận quá nên không tham gia cùng các Bác được. Cái block ấy xuất hiện khi dùng lisp phía trên đó Bác. Khi lisp chạy lần đầu thì nó kiểm tra trên bản vẽ có block ghithep_t chưa nếu chưa có thì tạo block này. lần thứ 2 chạy thì nó lấy luôn cái block cũ ra chèn vào vị trí cần. Em dùng lisp đó không thấy báo lỗi như bạn ấy nói để em kiểm tra lại cái đã.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Ở đây, anh đã giúp cho công việc cắt theo đường biên của thửa đó, theo khoảng cách bắt kỳ.

Mình nhờ anh giúp bổ sung cho việc cắt vùng khi chọn vào tâm thửa thì cắt theo phạm vi hình chử nhật với yêu cần nhập dài , rộng vào.

Cám ơn anh

Bạn thử cái này nhé. Vùng cắt là hình chữ nhật khi nhập khoảng cách thì hình chữ nhật sẽ rộng thêm ra còn mạch định là hình chữ nhật bao ngoài thửa đất (khi khoảng cách bằng 0). Làm như vậy để trách trưởng hợp khi bạn nhập kích thước hình chữ nhật nhỏ hơn thửa đất thì lisp chạy bị lỗi.

(defun c:cthua ()
 (vl-load-com)
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (setq p T)
 (while p
   (setq p (getpoint "\nPick vao vi tri thua muon trich do: "))
   (command "boundary" p "")
   (setq el1 (entlast))
   (setq of (getreal "\nNhap khoang cach muon lay ra xung quanh: "))
   (setq recp (acet-ent-geomextents el1))
   (setq rec1 (car recp) rec2 (cadr recp))
   (command "rectang" rec1 rec2)
   (setq elrec (entlast))
   (setq ranp (car (acet-geom-vertex-list elrec)))
   (setq pout (polar p (angle p ranp) (+ (distance p ranp) of)))
   (command "offset" of elrec pout "")
   (setq el2 (entlast))
   (command "zoom" "e")
   (setq lsp (acet-geom-vertex-list el2))
   (setq ss (ssget "cp" lsp '((0 . "LINE,LWPOLYLINE"))))
   (setq ss (ssdel el1 ss))
   (setq ss (ssdel el2 ss))
   (setq ss (ssdel elrec ss))
   (command "copy" ss "" p (setq pm (getpoint "\nPick vao vi tri can chen")) "")
   (setq sstext (laytext el1 (* of 6) pm))
   (command "copy" sstext "" p pm "")
   (command "move" el1 el2 elrec "" p pm)
   (command "offset" 1 el2 p "")
   (setq el3 (entlast))
   (setq lsf (acet-geom-vertex-list el3))
   (setq i 0)
   (repeat 2
   (command "trim" el2 "" "f")
   (repeat (length lsf)
     (command (nth i lsf))
     (setq i (1+ i))
     )
   (command "" "")
   )
   (entdel el1)
   (entdel elrec)
   (entdel el2)
   (entdel el3)
   (command "zoom" "p")
   (setq dk (getstring "\nTrich thua da hoan thanh. ban co muon tiep tuc khong: : [Co]: "))
   (if (or (= (strcase dk) "C") (= dk "")) (setq p T))
   (if (= (strcase dk) "K") (setq p nil))
   )
 (setvar "osmode" oldos)
 )
(defun laytext ( plk kc po / elt lstt)
 (command "offset" kc plk po "")
 (setq elt (entlast))
 (setq lstt (acet-geom-vertex-list elt))
 (setq sst (ssget "wp" lstt '((0 . "TEXT"))))
 (command "undo" 1)
 sst
 )

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamngoctukts    708
Cám ơn Anh.

Mình cắt một hình vuông nhưng lisp chọn nhiều text xung quanh qua. mình muốn khi cắt theo hình qui định với mục đích tìm các cạnh giới hạn các thửa liều kề và tố thửa của các thửa đó.

Mong được anh xem giúp

http://www.cadviet.com/upfiles/3/biendong_a.dwg

Thuật toán để lọc các text của các thửa xung quanh thửa chính thì mình vẫn chưa nghĩ ra. Bạn chịu khó lọc bỏ text thưa bằng tay cho nó chuẫn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
phamthanhbinh    3.123
Hề hề chào Bác Bình!

Mấy hôm nây bận quá nên không tham gia cùng các Bác được. Cái block ấy xuất hiện khi dùng lisp phía trên đó Bác. Khi lisp chạy lần đầu thì nó kiểm tra trên bản vẽ có block ghithep_t chưa nếu chưa có thì tạo block này. lần thứ 2 chạy thì nó lấy luôn cái block cũ ra chèn vào vị trí cần. Em dùng lisp đó không thấy báo lỗi như bạn ấy nói để em kiểm tra lại cái đã.

Chu choa,

Vậy là mình không hiểu ý bạn đó rồi. Mình cứ tìm cái block có sẵn, đâu dè phải chạy lisp thì mới có cái block thứ hai để kiểm tra. Cái block trong lisp của bác thì mình cũng phương phưởng thấy cái bóng dáng của nó rồi, nhưng cứ tưởng bạn ấy hỏi block khác nữa mới khổ chứ. Cơ khổ, cái tội không hiểu được ý người khác đây.

Hề hề hề......

Sorry cả nhà hỉ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
lacvanhoa    0

Chào anh phamthanhbinh!

Em định nhờ các anh trên diễn đàn sữa lại cái gì gì.net cho nó chạy đúng ý, theo lời anh nói thì nó đã bị mã hoá rồi thì đành bó tay vậy. Cám ơn anh nhiều nhe!

Chúc anh luôn vui vẽ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
bangquang    0
Bạn thử xem:

-Thao tác:

+Nhập lệnh: GCM

+Chọn đối tượng (chọn vô tư lisp tự lọc và nhận các đối tượng text) xong thì enter.

+Lisp hỏi Gach phia: Tren/ text: Bạn nhập T thì gạch trên, D thì gạch dưới (enter sẽ mặc định là gạch dưới).

+Lisp hỏi Khoang cach line voi text bang do lon text chia < 5>: Mặc định khoảng cách line với text là 1/5 độ lớn text muốn thay đổi thì bạn gỏ vào, không thì enter.

*Lisp này chưa tối ưu hóa được nhưng hiện mình đang bận nên không tiếp tục hoàn thiện được bạn dùng tạm vậy.

http://www.cadviet.com/upfiles/2/gachchantd.lsp

Đang cần Lisp này. Link trên không down được bà con giúp với

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
790312    4

Bác Tue_nv có viết 1 lisp vẽ thép dưới sàn rất tiện mong các bác thêm giùm e dòng lệnh trước câu " đường kính móc tròn" một lựa chọn: "Có móc hay không móc" nếu Có thì "câu đường kính móc tròn" nếu Không thì hỏi "chiều dài đoạn xéo" khi nhập rồi sẽ vẽ nhưng đoạn đầu không phải móc mà cắt thép gồm 1 đoạn thẳng có chiều dài nhập vào và xéo 1 góc 30độ.Mong các bác sửa giúp.

(DEFUN C:SD (/ OLDERR CMD OSM DK PT1 PT2 PT3 PT4 PT5 PT6 STR PRPT GOCX GOCY
			PTD PTC)
(SETQ OLDERR *error*
  *error* myerror)
(command "layer" "m" "thep" "c" "6" """")
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETVAR "CMDECHO" 0)
(SETQ DK (GETVAR "USERR3"))
(IF (= DK 0)
(PROGN
 (SETQ STR "1")
 (SETVAR "USERR3" 100)
)	
(SETQ STR (RTOS DK))
)
(SETQ PRPT (STRCAT "Duong kinh moc tron <" STR ">:"))
(SETQ DK (GETREAL PRPT))
(IF (= DK NIL)
(SETQ DK (GETVAR "USERR3"))
(SETVAR "USERR3" DK)
)
(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETVAR "OSMODE" 0)
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(SETQ PT1 (POLAR PTD GOCX (/ (* 100 DK) 2)))
(SETQ PT2 (POLAR PTC (+ GOCX PI) (/ (* 100 DK) 2)))
(SETQ PT3 (POLAR PT1 GOCY (* 100 DK)))
(SETQ PT4 (POLAR PT2 GOCY (* 100 DK)))
(SETQ PT5 (POLAR PT3 GOCX (* 100 DK)))
(SETQ PT6 (POLAR PT4 (+ GOCX PI) (* 100 DK)))
(COMMAND "PLINE" PT5 PT3 "A" PT1 "L" PT2 "A" PT4 "L" PT6 "")
(SETVAR "OSMODE" OSM)
(SETVAR "CMDECHO" CMD)
(PRINC)
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tue_NV    3.841
Bác Tue_nv có viết 1 lisp vẽ thép dưới sàn rất tiện mong các bác thêm giùm e dòng lệnh trước câu " đường kính móc tròn" một lựa chọn: "Có móc hay không móc" nếu Có thì "câu đường kính móc tròn" nếu Không thì hỏi "chiều dài đoạn xéo" khi nhập rồi sẽ vẽ nhưng đoạn đầu không phải móc mà cắt thép gồm 1 đoạn thẳng có chiều dài nhập vào và xéo 1 góc 30độ.Mong các bác sửa giúp.

Của bạn đây :

(DEFUN C:SD (/ OLDERR CMD OSM DK PT1 PT2 PT3 PT4 PT5 PT6 STR PRPT GOCX GOCY
                PTD PTC ans)
(SETQ OLDERR *error*
      *error* myerror)
(command "layer" "m" "thep" "c" "6" """")
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ OSM (GETVAR "OSMODE"))
(SETVAR "CMDECHO" 0)
(SETQ DK (GETVAR "USERR3"))
(IF (= DK 0)
    (PROGN
     (SETQ STR "1")
     (SETVAR "USERR3" 100)
    )    
    (SETQ STR (RTOS DK))
)

(SETQ PRPT (STRCAT "Duong kinh moc tron :"))
(SETQ DK (GETREAL PRPT))
(IF (= DK NIL)
    (SETQ DK (GETVAR "USERR3"))
    (SETVAR "USERR3" DK)
)

(INITGET 7)
(SETQ PTD (GETPOINT "\nFrom point:"))
(INITGET 7)
(SETQ PTC (GETPOINT PTD "\nTo point:"))
(SETVAR "OSMODE" 0)
(SETQ GOCX (ANGLE PTD PTC))
(SETQ GOCY (+ GOCX (/ PI 2)))
(initget "C K")
(setq ans (getkword "\n Co moc tron hay khong ?"))
(if (= ans "C") (progn
(SETQ PT1 (POLAR PTD GOCX (/ (* 100 DK) 2)))
(SETQ PT2 (POLAR PTC (+ GOCX PI) (/ (* 100 DK) 2)))
(SETQ PT3 (POLAR PT1 GOCY (* 100 DK)))
(SETQ PT4 (POLAR PT2 GOCY (* 100 DK)))
(SETQ PT5 (POLAR PT3 GOCX (* 100 DK)))
(SETQ PT6 (POLAR PT4 (+ GOCX PI) (* 100 DK)))
(COMMAND "PLINE" PT5 PT3 "A" PT1 "L" PT2 "A" PT4 "L" PT6 "")
);progn1
(progn
(SETQ PT1 (POLAR PTD (+ GOCX (/ pi 6)) (/ (* 100 DK) 2)))
(SETQ PT2 (POLAR PTC (+ GOCY (/ pi 3)) (/ (* 100 DK) 2)))
(COMMAND "PLINE" PT1 PTD PTC PT2 "")
);progn
);if

(SETVAR "OSMODE" OSM)
(SETVAR "CMDECHO" CMD)
(PRINC)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×